[PHP]Hilfe bei Editfunktion gesucht.

The Prophet

Rear Admiral
Registriert
Aug. 2001
Beiträge
5.981
Na dann muss ich wohl doch mal wieder in meinem Lieblingsforum posten :)

Hab nen Problem mit meinem Gb Script. Im Adminbereich ist bin ich dabei eine Editfunktion für getätigte Beiträge zu errichten nur leider komme ich nicht weiter.
Bei jedem neuen Beitrag wird eine neue Datei erstellt. Nach dem Muster
PHP:
daten$i.gb
Nebenbei wird die Anzahl der Einträge in einer seperaten Counter Datei gezählt.
Im Adminbereich bin ich nun soweit das ich die Eintrags ID per Dropedownliste wählen kann.
PHP:
<?php
 $file = fopen("../daten/count.gb","r");
   $i = fread($file,filesize("../daten/count.gb"));
   fclose($file);
echo '<form method="get">';
echo '<select name="select">'; 
for($id=1;$id <= $i;$id++) 
{ 
  echo '<option>'.$id.'</option>'; 
} 
echo '</select>'; echo '&nbsp;','&nbsp;','&nbsp;';
echo '<input type="submit" value="Senden">';
if ($select != "") 
{ 
$datei = fopen("../daten/daten$select.gb", "r"); 
fpassthru($datei);
}
?>
Eine Ausgabe hingegen bekomme ich nicht zu stande. Diese sollte in einer Textarea erfolgen.
Die Daten in den Dateien werden nach folgendem Muster gespeichert
PHP:
$file = array("Unbekannt","","Unbekannt","29.06.2002","11:48:35","[blau]lala[/blau]","http://","127.0.0.1","");

Bin über jeden Tipp dankbar.

mfg
 
PHP:
$file = array("Unbekannt","","Unbekannt","29.06.2002","11:48:35","[blau]lala[/blau]","http://","127.0.0.1","");
Ist das wirklich der Inhalt deiner .gb-Datei? Ich denke du willst bewirken, dass der Code einfach als PHP-Code in das Script eingefügt wird, sodass du dann mit dem Array $file arbeiten kannst.

Besser ist es meiner Meinung nach, das so zu machen, dass die einzelnen Daten (Name, E-Mail, Text,...) durch ein Trennzeichen (z.B. |||) getrennt in der Datei abgespeichert werden. Keinesfalls würde ich PHP-Code in der Datei verwenden. Erstens könntest du ja irgendwann mal eine andere Programmiersprache verwenden wollen, sodass du dann alle Dateien anpassen müsstest oder deine Daten nicht weiter verwenden könntest und zweitens könntest du auch ein Sicherheitsproblem bekommen, wenn es jemandem gelingt, PHP-Code in dem Text so unterzubringen, dass er von deinem Script mit ausgeführt wird!

Den gesamten Inhalt einer Datei liest du am besten mit file_get_contents() in eine Variable. Wenn du bei deiner Variante verbleiben willst, dann führst du den Code in der Variablen mit eval() aus, als ob er in deinem jetzigen Script stehen würde. Bei der Variante mit Trennzeichen könntest du den Dateiinhalt mit explode() nach dem Trennzeichen deiner Wahl in ein Array aufsplitten!
 
Jab das ist der Inhalt. Finde es so eigentlich ganz praktisch. HTML & PHP Code ist natürlich deaktiviert.
Das dürfte also nicht gelingen. Deswegen habe ich ja UBB Code eingebaut. Der Array wird aus den Daten erstellt ich denke nicht das da was passieren kann. Möglich ist natürlich alles.
Die Möglichkeit des auslesens teste ich nach dem Spiel ;)
mal. Aber erstmal Danke für deine Tipps.

mfg
 
Sicherlich könnte man das ganze per explode() machen, aber wenn er das schonmal so hat :)
Aber sobald explode() benutz wird führt es zur gleichen Sicherheitslücke. Sollte jemand das Trennzeichen im Code mit drin haben würde es zum gleichen Problem führen, welches sogar noch blöder zu bewältigen wäre, man könnte zwar vor dem Speichern diese Zeichen dann rausfiltern, aber das ist doch genauso blöde. :D
 
Also Leerzeichen kommen sicherlich nicht vor.
Hab die Strings mit
PHP:
trim
versehen. Zumindestens bei denen es sich lohnt und geht.
Hast du die Editfunktion geschafft? Ich war Gestern net zu Hause.
 
Nichts leichter als das !!

PHP:
<?

require("../daten/daten$id.gb");

// einlesen der Daten in die Struktur
// bearbeiten 
// absenden 
// überschreiben 

?>

mehr ist das doch nicht :)
Aber ich arbeite grad an der Gallery (mit MySQL) für Gfx4all damit wir bald wieder ON gehen können. Werd ma noch schnell die Edit Funktion proggen !
Meld dich dann ma plz.
 
Zuletzt bearbeitet:
Hab gleich Zeit für das Project.
Muss hier nurnoch was erledigen.
 
Zurück
Oben