PHP-Gästebuch Problem (Ich == Php-Depp)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP-Gästebuch Problem (Ich == Php-Depp)

    Hallo,
    Sie lesen gerade die Nachricht eines kleinen kaumkriminellen (das bin übrigens ich!), der sich vor langer Zeit dazu entschlossen hat,
    eine Webseite zu machen. Leider ist dieser komische Mensch erstens ein Depp und zweitens ein Sturkopf, jedenfalls setzte er sich es in den Kopf,
    sein Gästebuch selbst zu programmieren. Nachdem er sich also für seine Zwecke ausreichende HTML-Kenntnisse angeeignet hatte,
    schaute er sich nach einer gästebuchtauglichen Programmiersprache um und fand PHP. Er holte sich also von einer sehr interessanten Seite
    (http.www.php-resource.de, eine wirjklich gute Seite, sollten Sie auch mal d'rauf gehen), wo andere sehr schlaue PHP-Profis Scripts
    veröffentlichten ein solchiges, das er mit seinem Amateur-Blick als attraktiv einstufte.
    Er hat nun seine Seite veröffentlicht (http://www.thomassteierer.de, wer's wissen will) und sein PHP-Script so umgeschrieben,
    dass er glaubte, es entspräche seinen seifenblasenartigen Wunschräumen.
    Aber das tut es nicht;
    Es kommt einfach nur das Gästebuch ohne neue Nachricht, wenn man beim Formular auf 'submit' klickt.
    Was mich, d.h. ihn natürlich wundert
    Hier jedenfalls der Code mit vielen Kommentaren; die meisten sind vom Ur-Autor, die von mir sind von wegen der
    manchmaligen Komik einiger Befehle:
    PHP-Code:
    // hier holen wir die mit form gesendeten Daten
    <?php
    $name 
    $HTTP_POST_VARS['name'];
    $email $HTTP_POST_VARS['email'];
    $hp $HTTP_POST_VARS['hp'];
    $icq $HTTP_POST_VARS['icq'];
    $text $HTTP_POST_VARS['txt'];

    // wurde auf den submit-button gedrueckt?
    if($submit)
    {
    // hier wird geprueft ob name & txt ordnungsgemaess ausgefuellt sind.
    if($name == "")
    echo 
    "<div align='center'><b>Fehler!<br>Haben Sie denn keinen Namen?</b></div>";
    else {
    if(
    $text == "")
    echo 
    "<b><div align='center'>Fehler!<br>Leute, die nichts zu sagen 
    haben, sollten keine Gaestebuecher benutzen...</div></b>"
    ;

    else{

    if (
    $email == "")
    $email2 "";
    else{
    $email2 "<a href='mailto:$email'>E-Mail</a>";
    //Diese Variable email2 soll den HTML Code nachher bequemer machen
    //Genau das gleiche mit hp (im Formular ist da 'http://' vorgegeben 
    //und icq (zur richtigen Form mit dem Beispiel '123-456-789')
    if (($hp == "") || ($hp == "http://"))
    $hp2 == "";
    else{
    $hp2 '<a href="$hp">Homepage</a>';
    if((
    $icq == "") || ($icq == "123-456-789"))
    $icq2 "";
    else{
    $icq2 "ICQ-Nummer: $icq";

    // Variable X wird auf null gesetzt
    $x 0;

    $dateiname "gbook.txt";

    // hier wird die Datei 'gbook.txt' geoeffnet um
    // die 'vorhandenen' Eintraege zu lesen.
    // 'R' bedeutet READ
    $datei fopen($dateiname"r");

    // mit 'WHILE (!feof($datei))' wird die Datei Zeile fuer Zeile
    // ausgelesen und in die Variable '$saved[x]' gespeichert!
    // Das wird gebraucht um die neuesten Eintraege OBEN anzuzeigen!
    while (!feof($datei)) {
    $x++;
    $saved[$x] = fgets($datei1024);
    }
    // Datum und Uhrzeit ermitteln
    $datum date("d.m.Y");
    $zeit date("H:i");
    // Hier wird in die Datei 'gbook.txt' geschrieben.
    // 'W' bedeutet WRITE
    $datei=fopen("gbook.txt""w");
    // Strip_tags entfernt HTML- & PHP-Tags aus der Nachricht
    $text=strip_tags($text);

    // Hier wird der neue Eintrag in die Datei geschrieben

    // (anders als mit den vielen Leerzeichen - der Profi-Programmierer
    // wird sich totlachen oder aber weinen - wusste ich meine Ziele nicht zu
    // erreichen. ich bitte um verständnis der unübersichtlichkeit wegen)
    fwrite($datei"<br><br><br><div align='center'>$email2
    <table border='1' align='center' bgcolor='
    $farb'><tr><td><br><b>$icq2 
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp
    <u><font size='+2'>
    $name</font></u> 
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    $hp2</b><br>
    $datum$zeit Uhr<br>
    <br>
    $text<br>
    </td></tr></table></div>\n"
    );

    // ...und danach die vorher ausgelesenen Zeilen hinten dran schreiben..
    for ($i=1;$i <= $x$i++) {
    fwrite($datei"$saved[$i]");
    }
    // Datei schliessen
    fclose($datei);
    }
    }
    }
    }
    }
    }
    // die Eintraege auslesen & anzeigen
    $dateiname "gbook.txt";
    $datei fopen($dateiname"r");
    fpassthru($datei);
    ?>
    Ich weise wiederholt darauf hin, (dass mir durchaus klar ist,) dass das ganze hier - wie meine ganze Webseite - programmiertechnisch furchtbar ist. Leider hab ich auch keine Fehlermeldungen,
    von denen ausgehend ich den Bereich des Ursprungs des Fehlers hätte vermindern können.
    SORRY!
    Es ist nicht deine Schuld, dass die Welt ist, wie sie ist,
    Es wär nur deine Schuld, wenn sie so bleibt

  • #2
    1. error_reporting(E_ALL) an den anfang der datei setzen.
    2. tabs zum einrücken der zeilen benutzen - steigert die lesbarkeit
    3. durch testausgaben (mit echo oder die) herausfinden, an welcher stelle sich die anwendung unerwartet verhält.

    www.schattenbaum.net
    www.php-faq.de
    www.php.net (!)
    tut.php-q.net

    könnten hilfreich sein.

    Kommentar


    • #3
      Re: PHP-Gästebuch Problem (Ich == Php-Depp)

      Original geschrieben von Rumo
      PHP-Code:
      // hier holen wir die mit form gesendeten Daten
      <?php
      $name 
      $HTTP_POST_VARS['name'];
      $email $HTTP_POST_VARS['email'];
      $hp $HTTP_POST_VARS['hp'];
      $icq $HTTP_POST_VARS['icq'];
      $text $HTTP_POST_VARS['txt'];

      // wurde auf den submit-button gedrueckt?
      if($submit)
      register_globals = on?
      Ansonsten ergibt die IF-Abfrage immer false!
      Und das, was ich noch gequotet habe, ist auch Schwachsinn....und das Array ist auch veraltet: Für übergaben gibt es die superglobalen Arrays, z.B. für Post $_POST und für Get $_GET, dann müsste die if-Abfrage lauten
      PHP-Code:
      if (isset($_POST['submit'])) 
      und der Rest oben am Besten weg, dann kann man im Code anhand des Names der Variablen schon erkennen, dass sie vom vorangegangenen Skript stammt!

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar

      Lädt...
      X