• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Gästebuch in Datei

Status
Für weitere Antworten geschlossen.

Geltos

Mitglied
Ich würde gerne ein Gästebuch machen, aber die Daten sollen nicht in eine Datenbank geschrieben werden (so habe ich es die ganze Zeit gemacht) sondern in eine Datei. Ist das möglich? Wenn ja, wie lautet der Befehl, womint man Einträge in eine Datei schreiben kann?

Außerdem wurde früher in meinem Gästebuch viel gespammt, kann man es vielleicht so machen, dass mir der Eintrag per E-Mail zugeschickt wird, und nur wenn ich ihn bestätige wird er eingetragen?

Danke im Vorraus, Geltos~
 
Natürlich, wie soll das denn gehen, wenn man den Quelltext nicht hat?
Ich sehe natürlich am HTML-Source, welcher PHP-Code dahinter steckt.
:?

Edit:
@morl, Mysterious,
Ok ich nehms zurück.

@Mysterious
Du hättest den Link aber direkt posten können.
 
Zuletzt bearbeitet:
Also.
Ich habe jetzt ein ganz normales Gästebuch gemacht, nur dass es nicht sofort in eine Datei einträgt, sondern die Daten erst per E-Mail zu mir geschickt werden. Die Datei die ich dann erhalte sieht so aus:


PHP:
$textz="<form name='Gaestebuch' action='....' method='post'>";
$textz.="<div class='box1'>";
$textz.="<div class='box2'>";
$textz.="<input type='text' name='nachname' value='Eingetragen von:<br><b>";
$textz.=$nachname;
$textz.="</b>'><br><br>";
$textz.="<input type='text' name='datum' value='Eingetragen am: <br>";
$textz.=$datum;
$textz.="'><br>";
$textz.="<input type='text' name='uhr' value='um: ";
$textz.=$zeit;
$textz.="'>";
$textz.=$maill;
$textz.=$hpp;
$textz.="</div>";
$textz.="<div class='box3'>";
$textz.="<textarea name='kommentar' cols='30' rows='5'>";
$textz.=$kommentar;
$textz.="</textarea><br>";
$textz.="<br><br><br>";
$textz.=$ip;
$textz.="</div></div>";
$textz.="<input type='submit' value='Abschicken'>";
$textz.="</form>";

Wenn ich dieses jetzt abschicke, wertet es dieses Skript aus:

PHP:
 <?php $nachname=$HTTP_POST_VARS['nachname']; 
$hp=$HTTP_POST_VARS['hp']; 
$mail=$HTTP_POST_VARS['mail']; 
$kommentar=$HTTP_POST_VARS['kommentar']; 
$datum=$HTTP_POST_VARS['datum']; 
$uhr=$HTTP_POST_VARS['uhr'];  $kommentar=nl2br($kommentar);
$kommentar=stripslashes($kommentar);   
$eintrag="<div class='box1'>";
$eintrag.="<div class='box2'>";
$eintrag.=$nachname;
$eintrag.=$datum;
$eintrag.=$uhr;
$eintrag.=$mail;
$eintrag.=$hp;
$eintrag.="</div>";
$eintrag.="<div class='box3'>";
$eintrag.=$kommentar;
$eintrag.="</div></div>"; 
$alteEintraege=file("gaeste.txt");
$AnzahlDerEintraege=count($alteEintraege);
$eintraege="$eintrag$alteEintraege[0]";
$z=1;
for ($z; $z<$AnzahlDerEintraege; $z++)
 {
  $eintraege="$eintraege$alteEintraege[$z]";
 }
$datei=fopen("gaeste.txt", "w");
fwrite ($datei, $eintraege); 
print ("Eingetragen"); ?>

Jedoch ist das einzige was es einträgt dieses hier:

HTML:
<div class='box1'><div class='box2'></div><div class='box3'></div></div>

Woran liegt das? Ich habe alles jetzt schon so oft durchgeschaut aber ich erkenne einfach keinen Fehler!

Mod-Edit: PHP-Tags hinzugefügt, und Code-Tags in HTML-Tags geändert - Bitte immer passende Tags benutzen (Artemis)
 
Zuletzt bearbeitet von einem Moderator:
Wie der Titel schon sagt, will ich das Gästebuch in einer Datei, nicht in einer Datenbank. Und sonst klappt es ja auch alles, nur der Datenaustausch zwischen der Erhaltenen E-Mail und dem Auswertungsskript klappt nicht.
 
1. $HTTP_POST_VARS -> *schauder*, besser du benutzt das $_POST-Array
2. Warum werden die gesendeten Variablen nochmal an Variablen übergeben? (z.Bsp: $nachname=$HTTP_POST_VARS['nachname'];). Das ist vollkommen unnötig.
3. Das zusammenführen der Einträge ist nicht korrekt
PHP:
$eintraege="$eintrag$alteEintraege[0]";
Es sollte so lauten
PHP:
$eintraege="$eintrag.$alteEintraege[0]";
4. Warum speicherst du die Einträge formatiert. Es ist vollkommen unnötig und verbraucht nur unnütz Speicherplatz. Zudem dauert es auch länger die Einträge auszulesen. Speichere deine Einträge doch direkt so wie du sie per post übermittelt bekommts als Array in die Datei. Hierzu solltest du einen Blick auf die Funktionen serialize() und unserialize() werfen.
 
@morl

zu 3.
Deine Lösung ist genauso sinnlos. Warum das ganze in einen String packen?
PHP:
$eintraege=$eintrag.$alteEintraege[0];
macht das gleiche und ist übersichtlicher.
 
Punkt 1 und 3 habe ich geändert, 2 will ich mal so lassen weil es für mich übersichtlicher ist und 4 mach ich, wenn es funktioniert.
Trotzdem sender das Formular aus der E-Mail die ich bekomme die Daten noch nicht an meinen Webserver.
 
@Artemis: Punkt 3 ist nicht sinnlos. Ich habe lediglich den Fehler in seinem Code aufgezeigt und zu diesem Zweck die entsprechenden Passagen kopiert. Niemals war die Rede davon, das dieser Code auch "sauber" ist.

@Geltos: Ein <br> innerhalb des value-Attributes eines input-Tags ist nicht das gelbe vom Ei und schon garnicht valide.
 
morl schrieb:
@Geltos: Ein <br> innerhalb des value-Attributes eines input-Tags ist nicht das gelbe vom Ei und schon garnicht valide.

Naja... das ist ja nur dafür da, weil die E-Mail die ich geschickt bekomme wenn ein Besucher eien Eintrag verfassen will, ein Formular ist, was ich in bestimmten Funkten noch verändern kann. Um diese Sachen geht es aber eigentlch garnicht, sondern, wie ich die Daten aus dem Formular zu dem auswertungsskript auf dem Server vernsenden kann.
 
Doch, genau darum geht es. Gut möglich das dein Email-Programm den Inhalt des Input-Feldes nicht akzeptiert, weil da dieses besagte <br> enthalten ist und somit keinen Inhalt sendet. Zu testzwecken kannst du es ja mal raus nehmen um einen Fehler durch das enthaltene <br> auszuschliessen.
 
Ok, ich habs mal getestet aber es geht leider auch nicht :( danach hab ich mal probiert obs vielleicht an den anderen HTML Tags liegt, aber selbst dann klappt es nicht... es ist anscheint nicht möglich, per E-Mail Daten an ein Webserver Skript zu senden, oder?
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben