Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Kleine Frage zu Gästebuch

  1. #1
    Prinz(essin) Avatar von Alienx
    Registriert seit
    04.05.2007
    Ort
    Stuttgart
    Alter
    24
    Beiträge
    904
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Kleine Frage zu Gästebuch

    Hio,

    ich habe mir einen kleinen PHP Code geschrieben, den ich gerne bei einem Gästebuch einsetzen würde.

    Da ich noch sehr unerfahren im Skripten von PHP-Programmen bin, muss das ganze Ding bis jetzt auch noch ohne "echte" Datenbank auskommen, sondern nur mit einer Textdatei. Soweit ist das ja auch kein Problem und auch das Skript macht, was es soll. Doch eben dies ist das, was ich nicht so möchte.

    Bevor das Formular, also der PHP Code ausgeführt wird, soll überprüft werden, ob alle Felder ausgefüllt sind, ansonsten soll das Programm die Ausführung einfach abbrechen. Jetzt habe ich mal etwas gegoogelt und bin auch auf eine methode gestoßen, wie ich überprüfen kann, ob die Felder leer sind oder nicht und dann entspr. abbreche oder eben nicht.

    Leider hat dies nicht geklappt, da wenn ich empty auf TRUE setzte, ja das Skript sowieso ausgeführt wurde, bei "FALSE" aber überhaupt nichts geschah, auch wenn die Felder ausgefüllt waren.

    Hier mein bisheriger Code:

    Code:
    <h3>G&auml;stebuch</h3>
    
    <form action="guestbook.php" method="POST">
    
    
    
    Dein Name&#58;</p>
     
    
    
    <input type="text" name="Name" style="border&#58;1px solid #5d5d5d;width&#58;200px;height&#58;25px;background&#58;#201a1a;color&#58;#999999;"></p>
    
    
    
    Bitte gib deine Nachricht ein</p>
    
    
    
    <input type="text" name="msg" size="20" style="border&#58;1px solid #5d5d5d;width&#58;400px;height&#58;100px;background&#58;#201a1a;color&#58;#999999;"></p>
    
    
    <input type="submit" value="absenden"></p>
    </form>
    
    <?PHP
    
    $php_name = $_POST&#91;'Name'&#93;. "schrieb Folgendes&#58;";
    
    $php_msg = $_POST&#91;'msg'&#93;;
    
    $php_ausgabe = "<div style='border&#58;1px solid #5d5d5d;width&#58;400px;margin-top&#58;15px;padding&#58;5px;'>
    
    <ins>$php_name</ins></p>
    
    $php_msg</p></div>";
    
    $chatfile = 'msgs.txt';
    
    if &#40;is_writable&#40;$chatfile&#41;&#41; 
    &#123;
    
    if &#40;!$handle = fopen&#40;$chatfile, "a"&#41;&#41; &#123;
    print "";
    exit;
    &#125;
    
    if &#40;!fwrite&#40;$handle, $php_ausgabe&#41;&#41; &#123;
    print "";
    exit;
    &#125;
    
    print "";
    
    fclose&#40;$handle&#41;;
    
    &#125; else &#123;
    print "Zugriff verweigert";
    &#125;
    ?>
    
    <?PHP
    include&#40; "msgs.txt" &#41;;
    ?>
    Vielleicht kann mir ja hier jemand erklären, wie ich das Skript dazu bringe, den Code nur bei ausgefüllten Feldern auszuführen, denn so wird das Skript ja bei jedem Abruf ausgeführt, wodurch es dann auch die einzelnen Strings in den Variablenbezeichnungen ("z.B. "schrieb folgendes") postet. Wäre echt super!

    Danke und

    MfG Alienx
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!


  2. #2
    Kaiserliche Hoheit Avatar von No0ob
    Registriert seit
    02.01.2006
    Ort
    Nähe Frankfurt
    Beiträge
    1.500
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    if (empty($_POST[' Name']) || empty($_POST['msg'])) die('Alle Felder ausf&uuml;llen');

    Das wäre die banalste Methode

  3. #3
    Bandit
    Gast

    Standard

    muss das ganze Ding bis jetzt auch noch ohne "echte" Datenbank auskommen, sondern nur mit einer Textdatei
    Das solltest du ganz schnell ändern, denn mit einer datenbank ist das alles komfortabler und so schwer sind die erfordelichen funktionen auch nicht zu erlernen.

  4. #4
    Prinz(essin)
    Themenstarter
    Avatar von Alienx
    Registriert seit
    04.05.2007
    Ort
    Stuttgart
    Alter
    24
    Beiträge
    904
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Zitat Zitat von No0ob
    if (empty($_POST[' Name']) || empty($_POST['msg'])) die('Alle Felder ausf&uuml;llen');

    Das wäre die banalste Methode
    Hio,

    -DONE-

    Btw @Bandit: Ja, das habe ich sogar vor. Ich beschäftige mich momentan mit den PHP/MySQL-Grundlagen, aber vorerst reicht einmal diese "Möchtgern"-Datenbank aka *.txt-file.

    EDIT:

    So, mir ist eben noch etwas aufgefallen. Und zwar habe ich ja beim Öffnen der Datei den Modus "a" gewählt, wodurch die Einträge immer ans Ende der Datei geschrieben werden. Wenn ich mich nicht irre, sollte doch aber ein Eintrag an den Anfang der Datei geschrieben, sowie ausgelesen werde, wenn ich "a" mit "r+" ersetze. Leider wird dabei aber immer die gesamte Datei überschrieben, wodurch ich immer nur den letzten Eintrag in dieser habe.

    Wie kann ich es bewerkstelligen, dass die Einträge sowohl an den Anfang der *.txt geschrieben werden, als auch dass damit der bisherige Inhalt erhalten bleibt?

    EDIT2:

    Das Problem mit der Formularvalidierung hat sich erledigt. In dem Skript oben war ein Space bei der POST-Variable (bei den Hochkommata) zuviel drin, aber jetzt funzt es. Vielen Dank nochmal für die Hilfe!

    MfG Alienx


  5. #5
    Prinz(essin)
    Themenstarter
    Avatar von Alienx
    Registriert seit
    04.05.2007
    Ort
    Stuttgart
    Alter
    24
    Beiträge
    904
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hat keiner noch ne Idee zu meiner zweiten Frage?

    MfG Alienx


  6. #6
    Jedi Ritter Avatar von Dodo
    Registriert seit
    26.04.2008
    Ort
    Wien
    Alter
    27
    Beiträge
    3.774
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    datei in iener variable lesen
    ganze datei löschen
    erst den neuen post reinschreiben, dann den inhalt der variable dazu hinten dran
    Something big is coming. And there will be pirates and ninjas and unicorns...

  7. #7
    Prinz(essin)
    Themenstarter
    Avatar von Alienx
    Registriert seit
    04.05.2007
    Ort
    Stuttgart
    Alter
    24
    Beiträge
    904
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ah, vielen Dank, das ist eine sehr gute Idee!

    Kannst du mir noch sagen, wie ich den Inhalt einer Datei an eine Variable übergeben kann? Wäre echt super, konnte mit Googel nichts finden.

    MfG Alienx


  8. #8
    Jedi Ritter Avatar von Dodo
    Registriert seit
    26.04.2008
    Ort
    Wien
    Alter
    27
    Beiträge
    3.774
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    $variable = file_get_contents('deine/datei.txt');

    die funktion liest den gesamten text einer datei aus und gibt den dan zurück
    Something big is coming. And there will be pirates and ninjas and unicorns...

  9. #9
    Prinz(essin)
    Themenstarter
    Avatar von Alienx
    Registriert seit
    04.05.2007
    Ort
    Stuttgart
    Alter
    24
    Beiträge
    904
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hi
    danke, mein Quellcode sieht nun folgendermaßen aus:

    Code:
    <?PHP
    
    if &#40;empty&#40;$_POST&#91;'Name'&#93;&#41; || empty&#40;$_POST&#91;'msg'&#93;&#41;&#41; die&#40;'Alle Felder ausf&uuml;llen'&#41;;
    
    $php_name = $_POST&#91;'Name'&#93;;
    
    $php_url = $_POST&#91;'homepage'&#93;;
    
    $php_msg = $_POST&#91;'msg'&#93;;
    
    $php_ausgabe = "<div style='border&#58;1px solid #5d5d5d;width&#58;400px;margin-bottom&#58;15px;padding&#58;5px;background&#58;#252323;color&#58;#999999;'>
    
    <ins>$php_name schrieb folgendes&#58;</ins></p>
    
    $php_msg</p></div>";
    
    $chatfile = 'msgs.txt';
    
    $entries = file_get_contents&#40;'msgs.txt'&#41;; 
    
    if &#40;is_writable&#40;$chatfile&#41;&#41; 
    &#123;
    
    if &#40;!$handle = fopen&#40;$chatfile, "w"&#41;&#41; &#123;
    print "";
    exit;
    &#125;
    
    if &#40;!fwrite&#40;$handle, $php_ausgabe, $entries&#41;&#41; &#123;
    print "";
    exit;
    &#125;
    
    print "";
    
    fclose&#40;$handle&#41;;
    
    &#125; 
    else &#123;
    print "Zugriff verweigert";
    &#125;
    
    header&#40;"Location&#58; guestbook.php"&#41;;
    
    ?>
    Leider bleibt die Datei jetzt nach jedem Eintrag leer und auch die ganze Funktion wird mit dem Aufruf der write.php (das oben ist der Quellcode dieser) gestoppt, wodurch der Besucher nur einen weißen Schirm zu sehen bekommt, die header("Location") scheint gar nicht zu wirken.

    Hast du eine Idee, woran das liegen könnte?

    MfG Alienx


  10. #10
    Meister(in)
    Registriert seit
    24.10.2006
    Beiträge
    288
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ich würd das mit fopen etc. lassen und gleich machen:

    Code:
    //...
    $entries = file_get_contents&#40;'msgs.txt'&#41;;
    $entries = $neuer_Eintrag."\n".$entries;
    file_put_contents&#40;'msgs.txt", $entries&#41;;
    //...

    lg
    Andi

    PS: Komfortabler ist aber auf jeden fall ne DB!

Ähnliche Themen

  1. kleine frage
    Von dannyO im Forum Computer - Internet Forum
    Antworten: 2
    Letzter Beitrag: 27.04.2008, 19:09
  2. Kleine Frage
    Von Alienx im Forum Flash Forum
    Antworten: 9
    Letzter Beitrag: 22.12.2007, 21:10
  3. Kleine Frage
    Von Gast im Forum Off Topic und Quasselbox
    Antworten: 3
    Letzter Beitrag: 24.11.2007, 19:28
  4. kleine css frage
    Von gelöschter User im Forum HTML & CSS Forum
    Antworten: 6
    Letzter Beitrag: 22.11.2007, 15:45
  5. Kleine frage
    Von Gast im Forum HTML & CSS Forum
    Antworten: 3
    Letzter Beitrag: 28.11.2005, 13:18

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •