Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: txt filujen hallinta

Sivun loppuun

ipe [22.02.2005 09:40:25]

#

Noh tää on tämmönen helppokäyttöinen (ei kait se oma kehu niin kovasti haise? :)) txt filujen hallintapaneeli. Eli tällä voit poistaa, luoda ja muokata txt filuja.

Tein tämmösen kun huomasin että aika moni tarvii jotain tän tyylistä. Toivotaan että tästä on jollekkin edes jotain hyötyä :)

Muokattu:
28.2.05 Tein sillee et ton scriptin voi tallentaa millä nimellä vain.

1.5.05 Muutin koko koodin ainakin omasta mielestäni paremmaksi :D Samalla tein uudelleen nimeyksen.

<?php
	$fileName="txt/"; //listattavan hakemiston nimi. HUOM! huomaa kauttaviiva (/) lopussa!

	error_reporting(0);

	include("funktiot.php");

	if(!isset($_GET['act']) && !isset($_GET['id'])){ //jos ei ole annettu act:ia:

		include("yla.php");

		listaa($fileName); //kutsutaan listaus functiota

		echo "<center><a href=\"{$_SERVER['PHP_SELF']}?act=uusi&id=\">Luo uusi txt filu</a></center>";

		include("ala.php");

	} else { //muussatapauksessa:

		if($_GET['act'] == "muokkaa"){ //MUOKKAUS:

			if(!file_exists($_GET['id'])) exit("Tiedostoa {$_GET['id']} ei löydy."); //Löytyykös tiedosoa?

			include("yla.php");

			muokkaa($_GET['id']); //Kutsutaan muokkaus functiota

			include("ala.php");

		} elseif($_GET['act'] == "kirjoita"){ //KIRJOITUS:

			if($_GET['id'] != "kirjoita" && !file_exists($_GET['id'])) exit("Tiedostoa {$_GET['id']} ei löydy."); //Löytyykö tiedostoa?

			kirjoita(); //Kutusutaan kirjoitus functiota

		} elseif($_GET['act'] == "poista"){ //POISTO:

			if(!file_exists($_GET['id'])) exit("Tiedostoa {$_GET['id']} ei löydy."); //Löytyykö tiedostoa

			@unlink($_GET['id']); //Poistetaan..

			header("Location: {$_SERVER['PHP_SELF']}"); //uudelleen ohjaus

		} elseif($_GET['act'] == "uusi" && trim($_GET['id']) == ""){ //UUDEN TIEDOSTON LUONTI:

			uusi(); //functio hoitaa..

		} elseif($_GET['act'] == "nimea" && !isset($_POST['uusinimi'])){ //UUDELLEENNIMEYS:

			include("yla.php");

			uudelleennimeä("1"); //Kun halutaan antaa nimi, niin functio ottaa argumentiksi 1.

			include("ala.php");

		} elseif($_GET['act'] == "nimea" && isset($_POST['uusinimi'])){

			uudelleennimeä("2"); //Kun halutaan muutta nimi, niin functio ottaa argumentiksi 2.

		}

	}
?>

funktiot.php

<?php
	function listaa($fileName){ //LISTAUS FUNCTIO

		chmod($fileName, 0777);

		echo "<table bgcolor=\"#aaaaaa\" cellspacing=\"1\" cellpadding=\"2\" align=\"center\"><tr><td bgcolor=\"#ffffff\"><b>Tiedoston nimi:</b></td><td bgcolor=\"#ffffff\"><b>Koko:</b></td><td bgcolor=\"#ffffff\"><b>Toiminnot:</b></td></tr>";

		foreach (glob("$fileName*.txt") as $file) { //Tulostetaan kaikki halutun hakemison txt filut RUMAAN table taulukkoon.

			chmod($file, 0666);

			echo "
				<tr>
					<td bgcolor=\"#ffffff\">".str_replace("$fileName", "", $file)."</td>
					<td bgcolor=\"#ffffff\" align=\"center\">".filesize($file)."</td>
					<td bgcolor=\"#ffffff\"><a href=\"{$_SERVER['PHP_SELF']}?act=muokkaa&id=$file\">Muokkaa</a>|<a href=\"{$_SERVER['PHP_SELF']}?act=poista&id=$file\">Poista</a>|<a href=\"{$_SERVER['PHP_SELF']}?act=nimea&id=$file\">Nimeä uudelleen</a></td>
				</tr>
			"; //Ekaan td:seen tulostetaan tiedoson nimi.. ilman listattavan hakemison nimeä. Toiseen tiedoson koko ja kolmanteen toiminnot: Muokkaa, Poista ja uudelleen nimeys.

		}

		echo "</table>";

	}


	function muokkaa($file){ //MUOKKAUS FUNCTIO

		$filu=fopen($file, "r"); //Tiedosto avataan lukemista varten.

		$sis=fread($filu, filesize($file)); //Luetaan tiedoston koko sisältö.

		fclose($filu);

		$sis=stripslashes(preg_replace("/<br>/", "\n", $sis)); //muutetaan <br>:t rivinvaihdoikis jotka näkyvät textareassa.

		echo "
			<form action=\"{$_SERVER['PHP_SELF']}?act=kirjoita&id=$file\" method=\"POST\">
				<textarea name=\"muokkaa\" rows=\"30\" cols=\"100\">$sis</textarea><br>
				<input type=\"submit\" value=\"Lähetä\">
			</form>

		";
	}

	function uusi(){ //UUDEN TIEDOSON FORMIN TULOSTUS FUNCTIO ;)

		echo "
			<form action=\"{$_SERVER['PHP_SELF']}?act=kirjoita&id=kirjoita\" method=\"POST\">
				<b>Tiedoston nimi:</b><small>Muista tiedoston pääte! (.txt)</small><br><input type=\"text\" name=\"nimi\"><br>
				<b>Teksti:</b><br>
				<textarea name=\"muokkaa\" rows=\"30\" cols=\"100\"></textarea><br>
				<input type=\"submit\" value=\"Lähetä\">
			</form>

		";
	}

	function kirjoita(){ //SUHT MONIKÄYTTÖINEN KIRJOITUS FUNCTIO

		global $fileName;

		//p33l0 tarkistyksia
		if(!isset($_POST['muokkaa'])) exit("Muuttaminen vattii, että lähetät tiedot oikean lomakkeen kautta!");

		if($_GET['id'] != "kirjoita") $file=$_GET['id'];

		if(isset($_POST['nimi']) && trim($_POST['nimi']) != "") $file=$fileName.$_POST['nimi'];

		$filu=fopen($file, "w"); //avataan tiedosto kirjoitusta varten..

		flock($filu, LOCK_EX); //lukkoon

		$sis=preg_replace("/\n/", "<br>", $_POST['muokkaa']); //muutetaan rivinvaihdot html muotoon.

		fwrite($filu, $sis);

		flock($filu, LOCK_UN); //lukko auki

		fclose($filu);

		header("Location: {$_SERVER['PHP_SELF']}");

	}

	function uudelleennimeä($mik){ //UUDELLEEN NIMEYS FUNCTIO

		global $fileName;

		if($mik == "1"){ //Jos argumentti on 1

			echo "
				<b>Wanha nimi:</b> ".str_replace("$fileName", "", $_GET['id'])."
				<form action=\"{$_SERVER['PHP_SELF']}?act=nimea&id={$_GET['id']}\" method=\"POST\">
					<input type=\"text\" name=\"uusinimi\" value=\"".str_replace("$fileName", "", $_GET['id'])."\" size=\"100\"><br>
					<input type=\"submit\" value=\"Nimeä uudelleen\">
				</form>
			";

		} elseif($mik == "2"){ //Jos argumentti on 2

			@rename($_GET['id'], $fileName.$_POST['uusinimi']); //uudelleen nimetään.

			header("Location: {$_SERVER['PHP_SELF']}");

		}

	}
?>

yla.php

<html>
	<head>
		<title>txt filujen muokkaus versio 2.0</title>
		<style type="text/css">
			body, table { font-family: Tahoma, Verdana; font-size: 9pt; color: #000000; }
			a:link { color: #0000ea; text-decoration: underline; font-weight: normal; }
			a:visited { color: #0000ea; text-decoration: underline; font-weight: normal; }
			a:active { color: #0000ea; text-decoration: underline; font-weight: normal; }
			a:hover { color: #000099; text-decoration: underline; font-weight: normal; }
		</style>
	</head>
	<body>

ala.php

	</body>
</html>

kayttaja-2791 [26.02.2005 13:14:11]

#

Näyttäishän tuo toimivan, eikä päästä eikä listaa edes muita kuin .txt filuja lävitse. Tuollahan voi näppärästi toteuttaa vaikka pikamuokkaajan kotisivuille.

Jotain pientä palautetta: Muokkaustilassa on turhan paljon cols:eja minun resolle, menee reilusti yli näyttöalueen. Lisäksi voisit tehdä sellaisen version että skriptin ei ole pakko olla listaa.php, vaan se hakisi oman nimensä automaattisesti. Lisäksi itse koodin sisennykset näyttävät vähän epäloogisilta, ehkä vika on huonossa editorissa? Yksi hyvä on vaikkapa Notepad2.

stere [26.02.2005 13:23:25]

#

juu

stere [26.02.2005 13:24:02]

#

käytän nyk. tota ite

sain sillee et se muokkaa myös html ja php filuja.

ipe [26.02.2005 15:29:18]

#

Joo toi sisennys on iha vaa käsin heitetty ku käytin (vielä windows aikana) notepadia.

Vois kyl tosiaan tehä sillee et nimellä ei oo väliä.. ku kerkee ;)

Olga [28.02.2005 10:57:09]

#

ipe kirjoitti:

Vois kyl tosiaan tehä sillee et nimellä ei oo väliä.. ku kerkee ;)

Vinkki: $_SERVER['PHP_SELF']

ipe [28.02.2005 12:25:58]

#

lainaus:

sain sillee et se muokkaa myös html ja php filuja.

Joo mut tos on nimenomaan idea et se päästää läpi vaan txt filui ;)

J0nde [03.03.2005 17:11:13]

#

Vielä kun tulostaisi tiedostot aakkosjärjestyksessä. Muuten hyvä

ipe [03.03.2005 17:55:55]

#

No array_multisortilla onnistuu ihan helposti, mutta siitä on jo koodivinkki täällä putkassakin.

stere [18.06.2005 13:01:47]

#

Mun mielestä turhaan tehä ala.php kun sen voi sijottaa sinne ns. "index.php loppuun vai??"

stere [18.06.2005 13:04:04]

#

"Lähetä" Napin tilalla vois olla "Tallenna"?

stere [18.06.2005 13:08:31]

#

Vaihoin et noi on niinku php filui, pistin ton hakemistolistauksen alakansioo, suojasin .htacces

:)
Tietoturva aukkoi?

stere [18.06.2005 13:25:55]

#

http://koti.mbnet.fi/sllz/new/PHPFile/index.php

Go IN

AakenStein [10.11.2006 20:40:40]

#

eipä toimi minulla ;O

AakenStein [10.11.2006 20:40:57]

#

eipä toimi minulla :P

AakenStein [10.11.2006 20:41:00]

#

eipä toimi minulla :P

Mee [15.12.2006 17:33:55]

#

Ei toimi ja AakenStein, vaik ei toimis ei silti triplapostausta tarvis vetää.

Eilinen [12.01.2007 11:44:45]

#

Minä ainakin sain tämän toimimaan, kunhan muistatte tehdä txt-nimisen kansion, vaikka siitä ei missään mainita.

joskuu [29.07.2007 02:23:14]

#

Täydellinen tarpeisiini. Kiitos!

Jullu [21.05.2008 09:19:11]

#

Juu...osaisko joku neuvoo miten ton sais vielä niin, et käytössä vois olla useampiakin kansioita.

Eli siis niin, että txt-filet vois olla vielä ryhmiteltyinä omannimisiin kansiohinsa?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta