Hilfe beim ändern von txt Dateien

chris_xa

Grünschnabel
Hallo zusammen,

da ich in Sachen php ein absoluter Anfänger, wohl eher ein Unwissender bin, brauche ich wohl mal eure Hilfe. Ich brauche für meine Homepage ( http://www.freaksforfreedom ) ein php-Script, mit dem ich Änderungen in txt-Dateien vornehmen kann, die dann von Flash ausgelesen werden. Das Auslesen ist kein Problem - nur das ändern halt.

Ich habe schon versucht zu tricksen und habe den Adminbereich eines Text-Gästebuchs zum ändern der Datei genommen. Das funktioniert aber nur bedingt, gerade da dabei viel mehr Felder zum Eintragen vorhanden sind als ich eigentlich brauche. Ich bräuchte nur eine Seite in der ein Textfeld ist, in dem der Inhalt der txt-Datei steht, so dass ich den Ändern kann, auf Übernehmen oder so klicke und schon ist es geändert.

Jetzt ist meine Frage: Wer kann mir sagen, woher ich so ein Script bekomme // immer dran gedacht, dass ich absolut nichts umschreiben kann, weil ich absolut keine Ahnung von php habe. Oder wäre vielleicht sogar jemand bereit mir so ein Script zu schreiben, natürlich mit namentlicher Erwähnung auf meiner Seite?

Hoffe auf eure Unterstüzung weil ich langsam verzweifle.....
 
Mir würde es auch super helfen, wenn ihr mit mir zusammen, den Code des bestehende AdminTools für das GB so ändern könntet, dass es so ist wie ich es brauche...
 
Wieviel Ahnung hast Du denn von PHP?
Würde es Dir reichen und helfen, wenn ich Dir sage, mit welchen Funktionen Du Dateien öffnen, auslesen, schreiben und schließen kannst?
Oder wenn Du das Tool umbasteln willst, wie sieht denn der Quelltext dazu aus und was brauchst Du genau davon?

redlama
 
Also ich habe von PHP keine Ahnung, muss jetzt aber leider für das administrieren der txt-Datei darauf zurück greifen. Ich habe wie gesagt versucht, ein GB so zu benutzen, dass es klappt, hat aber natürlich zu viele Eingabefelder.

Aber hier ist der Code:

Code:
<?
include 'vars.php';

//NUN FOLGEN DIE IF-ABFRAGEN
//LÖSCHEN VON EINTRÄGEN
if ($Senden=="Eintrag löschen")
	{
	$file=file($einträge);
	$fd=fopen($einträge, "w+");
	$temp=1;
	foreach ($file as $line)
		{
			$exp_line = explode ("|-|",$line);
			if ($temp == $liste)
			{
			$temp++;
			}
			else
			{
			$temp++;
			fputs ($fd,$line);
			}
		}
		fclose($fd);
	}

//EDITIEREN AUFRUF EDITFENSTER
if ($Senden=="Eintrag editieren")
	{
	$file=file($einträge);
	$fd=fopen($editlink, "r");
	$temp=1;
	foreach ($file as $line)
		{
			$exp_line = explode ("|-|",$line);
			if ($temp == $liste)
			{
			print editinit("$liste");
			break;
			}
			else
			{
			$temp++;
			}
		}
	}

//EDITIEREN VORNEHMEN
if ($Senden=="Editieren")
{
$file=file($einträge);
$fd=fopen($einträge, "w+");
$temp=1;
	foreach ($file as $line)
		{
			$exp_line = explode ("|-|",$line);
			if ($temp == $zeilenr)
			{
			//Ausnahmen html-tags für bericht
  			$allowedTags='<a><br><b><h1><h2><h3><h4><i><li><ol><p><strong><u><ul>';  
			$newText = str_replace("\r","",$newtext); //php \r wird ersetzt durch html <br>
  			$newText = str_replace("|-|","",$newText);
  			$newtext = str_replace("\n","<br>",$newText); //php \n wird ersetzt durch html
  			$Bericht=strip_tags ($newtext,$allowedTags); //html für bericht wird unterbunden, und ausnahmen zugelassen
  			$newtext=stripslashes ($Bericht); //Gänsefüsschen werden korrigiert
  				
  			$new_line = "$newname$newmail$newurl$newtext$newdate$newtime\n";
			fputs ($fd,$new_line);
			$temp++;
			}
			else
			{
			fputs ($fd,$line);
			$temp++;
			}
		}
	fclose($fd);
}

//PASSWORTABFRAGE
if (($username == "") and ($password == "")) 
	{	
	print logon();
	}
elseif ($user != $username)
	{
	echo "<center><font color=\"red\">login fehlgeschlagen!</font></center>";
	print logon();
	}
elseif ($pass != $password)
	{
	echo "<center><font color=\"red\">login fehlgeschlagen!</font></center>";
	print logon();
	}
if (($user == $username) && ($pass == $password))
{
print admin();
}


//ALLE FUNKTIONEN
//FUNKTIONSAUFRUF EDITIERENFENSTER ÖFFNEN
function editinit($zeile)
{
	global $password,$username,$einträge,$liste;
	$file=file($einträge);
	$fd=fopen($einträge, "r");
	$temp=1;
	foreach ($file as $line)
		{
		$line = explode ("|-|",$line);
		if ($temp == $zeile)
			{
			$temp++;
			echo "<form method=\"post\"><table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\"><tr><td colspan=\"2\" bgcolor=\"#800000\" align=\"center\"><font color=\"#ffffff\" face=\"Geneva\" size=\"2\">Editieren";
			echo "</font></td></tr><tr valign=\"top\"><td align=\"left\" bgcolor=\"#FAEBD7\" width=\"100\">Name</td><td align=\"left\"><input type=\"text\" size=\"65\" name=\"newname\" value=\"$line[0]\">";
			echo "</font></td></tr><tr valign=\"top\"><td align=\"left\" bgcolor=\"#FFFFE0\" width=\"100\">email</td><td align=\"left\"><input type=\"text\" size=\"65\" name=\"newmail\" value=\"$line[1]\">";
			echo "</font></td></tr><tr valign=\"top\"><td align=\"left\" bgcolor=\"#FAEBD7\" width=\"100\">Homepage</td><td align=\"left\"><input type=\"text\" size=\"65\" name=\"newurl\" value=\"$line[2]\">";
			echo "</font></td></tr><tr valign=\"top\"><td align=\"left\" bgcolor=\"#FFFFE0\" width=\"100\">Text</td><td align=\"left\"><textarea cols=\"50\" rows=\"6\" name=\"newtext\">$line[3]</textarea>";
			echo "</font></td></tr><tr valign=\"top\"><td align=\"left\" bgcolor=\"#FAEBD7\" width=\"100\">Datum</td><td align=\"left\"><input type=\"text\" size=\"20\" name=\"newdate\" value=\"$line[4]\">";
			echo "</font></td></tr><tr valign=\"top\"><td align=\"left\" bgcolor=\"#FFFFE0\" width=\"100\">Uhrzeit</td><td align=\"left\"><input type=\"text\" size=\"20\" name=\"newtime\" value=\"$line[5]\">";
			echo "</font></td></tr><tr><td bgcolor=\"#800000\" align=\"center\" colspan=\"2\"><input type=\"submit\" name=\"Senden\" value=\"Editieren\"><input type=\"hidden\" name=\"username\" value=\"$username\"><input type=\"hidden\" name=\"password\" value=\"$password\"><input type=\"hidden\" name=\"zeilenr\" value=\"$zeile\"></font></form></td></tr></table>";
			}
		else
			{
			$temp++;
			}
		}
	}


//FUNKTION LOGIN-SCRIPT
function logon()
{echo("<html>\n<head><title>Login</title></head>\n<body>\n<form method=\"post\"><center><font face=\"arial\"><b>$msg</b><br><br></font></center><input type=\"hidden\" name=\"action\" value=\"admin\">\n".
      "<table border=\"0\" align=\"center\"><tr><td colspan=\"2\" align=\"center\"><font face=\"arial\"><b>Login:</b></font></td></tr><tr><td><font face=\"arial\">Name:</font></td><td><input type=\"text\" name=\"username\"></td></tr>\n".
      "<tr><td><font face=\"arial\">Passwort:</font></td><td><input type=\"password\" name=\"password\"></td></tr>\n".
      "<tr><td></td><td><input type=\"submit\" value=\"Login\"></td></tr></table></form>\n</body>\n</html>\n");
}
//FUNKTION ADMINOBERFLÄCHE
function admin()
{
global $password,$username,$einträge;
//header wird geschrieben
echo "<br><br><br><table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"700\" align=\"center\"><tr><td bgcolor=\"#800000\" align=\"center\"><font color=\"#ffffff\" face=\"Geneva\" size=\"5\">ADMIN-TOOL";
echo "</font></td></tr><tr><td bgcolor=\"#FFFFE0\" align=\"center\"><font face=\"Geneva\" size=\"3\">Webinterface für tc-txt-book v2.0!";
echo "</font></td></tr><tr><td bgcolor=\"#FAEBD7\" align=\"center\"><font face=\"Geneva\" size=\"3\"><a href=\"http://www.powerbulls.de/down/gb-down.php\" target=\"_blank\">check for update</a>";
echo "</font></td></tr></table>";
echo "";
echo "<hr width=\"700\">";
//admin-bereich:auflistung der einträge aus gb.txt
echo "<form method=\"post\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\"><tr><td colspan=\"9\" align=\"center\" bgcolor=\"#800000\"><font size=\"2\" face=\"Geneva\" color=\"#ffffff\"><b>Einträge löschen und editieren</b></font></td></tr>";
echo "</td></tr><tr><td height=\"10\" colspan=\"9\">";
echo "</td></tr><tr><td colspan=\"9\" align=\"center\"><input type=\"submit\" name=\"Senden\" value=\"Eintrag löschen\">   <input type=\"submit\" name=\"Senden\" value=\"Eintrag editieren\"><input type=\"hidden\" name=\"username\" value=\"$username\"><input type=\"hidden\" name=\"password\" value=\"$password\">";
echo "</td></tr><tr><td colspan=\"9\" align=\"center\"><font size=\"2\" face=\"Geneva\"><b>Bisher existierende Datensätze aus der gb.txt</b></font></td></tr>";   
echo "</td></tr><tr><td colspan=\"9\">";
echo "</td></tr><tr valign=\"top\" ><td align=\"left\" width=\"20\"><font size=\"2\" face=\"Geneva\">&nbsp</font></td><td align=\"left\"></td><td align=\"left\" width=\"100\"><font size=\"2\" face=\"Geneva\"><b>Name</b></font></td><td align=\"left\" width=\"150\"><font size=\"2\" face=\"Geneva\"><b>email</b></font></td><td align=\"left\" width=\"150\"><font size=\"2\" face=\"Geneva\"><b>Homepage</b></font></td><td align=\"left\" width=\"220\"><font size=\"2\" face=\"Geneva\"><b>Text</b></font></td><td align=\"left\"  width=\"70\"><font size=\"2\" face=\"Geneva\"><b>Datum</b></font></td><td align=\"left\" width=\"70\"><font size=\"2\" face=\"Geneva\"><b>Uhrzeit</b></font></td></tr>\n";
	$file = file($einträge);
    	$file = array_reverse($file);
    	$anzahl = count($file);
    	$temp=0;//für einfügen von buttons alle 10 Einträge 
    	foreach ($file as $line) 
    		{
     		$line = explode("|-|", $line);
     		echo "<tr><td colspan=\"8\"><hr></td></tr>";
     		echo "<tr valign=\"top\" ><td bgcolor=\"#DEB887\" align=\"center\" width=\"20\"><font color=\"#ffffff\" size=\"2\" face=\"Geneva\">$anzahl</font></td><td size=\"2\" align=\"left\"><input type=\"radio\" size=\"10\" name=\"liste\" value=\"$anzahl\"></td><td align=\"left\" bgcolor=\"#FAEBD7\" width=\"100\"><font size=\"2\" face=\"Geneva\">$line[0]</font></td><td bgcolor=\"#FFFFE0\" align=\"left\" width=\"150\"><font size=\"2\" face=\"Geneva\">$line[1]</font></td><td align=\"left\" bgcolor=\"#FAEBD7\" width=\"150\"><font size=\"2\" face=\"Geneva\">$line[2]</font></td><td bgcolor=\"#FFFFE0\" align=\"left\" width=\"220\"><font size=\"2\" face=\"Geneva\">$line[3]</font></td><td align=\"left\" bgcolor=\"#FAEBD7\" width=\"70\"><font size=\"2\" face=\"Geneva\">$line[4]</font></td><td bgcolor=\"#FFFFE0\" align=\"left\" width=\"70\"><font size=\"2\" face=\"Geneva\">$line[5]</font></td></tr>\n";
     		$anzahl--;
     		$temp++;
     		if ($temp == 10)
     			{
     			echo "</td></tr><tr><td colspan=\"9\" align=\"center\"><hr>";
     			echo "</td></tr><tr><td colspan=\"9\" align=\"center\"><input type=\"submit\" name=\"Senden\" value=\"Eintrag löschen\">  <input type=\"submit\" name=\"Senden\" value=\"Eintrag editieren\"><input type=\"hidden\" name=\"username\" value=\"$username\"><input type=\"hidden\" name=\"password\" value=\"$password\"></td></tr>";
     			$temp=0;
     			}
     		}
     		echo "<tr><td height=\"10\" colspan=\"9\">&nbsp";
     		echo "</td></tr><tr><td colspan=\"9\" align=\"center\"><input type=\"submit\" name=\"Senden\" value=\"Eintrag löschen\">  <input type=\"submit\" name=\"Senden\" value=\"Eintrag editieren\"><input type=\"hidden\" name=\"username\" value=\"$username\"><input type=\"hidden\" name=\"password\" value=\"$password\"></td></tr></table></form>";
//footer wird geschrieben
echo "<hr width=\"700\">";
echo "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"700\" align=\"center\"><tr><td bgcolor=\"#800000\" align=\"center\"><font color=\"#ffffff\" size=\"2\">admin-tool als Webinterface für tc-txt-book v2.0! © by tcberger www.powerbulls.de 18.03.2004";
echo "</font></td></tr></table>";
}
?>

Und der Rest:

Code:
<?
//hier bitte deine email eintragen
$mail = "deine_email";
//hier bitte name und passwort für den admin-bereich eintragen!
$user=admin;
$pass=admin;

//kein Bedarf, hier weiter zu editieren
$einträge = "hello.txt";
?>

Ich brauche eigentlich nur ein Textfeld in dem der aktuelle Text der TXT steht und einen Button um die Änderungen zu übernehmen. Ausserdem wäre es gut, wenn der TXT-Datei automatisch ein "&Text=" vorangeschaltet wird, muss aber nicht.

Ich brauche auch noch nichtmal ein Login.
Also, was muss raus?
 
Hi chris_xa!

Schau mal, ob Du mit folgendem hinkommst:
PHP:
<?php
$datei = ""; //Da den Namen der Datei rein
if(isset($_GET["edit"]))
{
  $ftp = fopen($datei, "w");
  $inhalt = $_POST["text"];
  $inhalt = str_replace("\r", "", $inhalt);
  fwrite($ftp, $inhalt);
  fclose($ftp);
  header("Location: editor.php");
}
else
{
  $ftp = fopen($datei, "r");
  $inhalt = fread($ftp, filesize($datei));
  fclose($ftp);
  echo "
<html>
  <body>
    <form method=\"post\" action=\"editor.php?edit=0\">
      <textarea name=\"text\" cols=\"50\" rows=\"10\">$inhalt</textarea>
      <input type=\"submit\" value=\"Text ändern\">
    </form>
  </body>
</html>
";
}
?>
Da musst Du oben bei $datei nur den Dateinamen (und den Pfad) angeben und dann das ganze im selben Verzeichnis, wo auch die .txt Datei liegt, unter dem Namen "editor.php" (wichtig!) speichern.

Und was meintest Du mit dem "&Text="? Das habe ich nicht so ganz verstanden, ...

redlama
 
:) Super! Vielen Dank - das ist genau das, was ich brauchte! Echt nochmals vielen Dank für die Hilfe.

Das mit dem "&Text=" war nur eine Spielerei. Die Textdatei muss immer mit diesem "&Text=" beginnen um für Flash auslesbar zu sein. Aber das kann man auch manuell in das
Eingabefeld eintippen // bloß nicht zuviel Luxus :)

Also nochmal vielen Dank für deine Hilfe!

Gruß, Chris
 
Zurück