Tyler Durden: Testserver funktioniert nicht richtig

Hi,

ich hab mir auf meinem PC einen "Testserver" installiert. Um genau zu sein das Packet von Apachefriends namens XAMPP.

Nun lerne ich mit einem Buch gerade PHP und MySQL und habe da ein Beispielguestbook ausprobiert. Die nutzt noch keine MySQL Datenbank, sondern legt die Daten in einem normalen .txt file ab. Leider funktioniert das Guestbook auf meinem Testserver einfach nicht.

Dann hab ich einfach mal das ganze auf meinem Webserver ausprobiert und siehe da, es funktioniert. Weiss jemand, an was das liegen könnte? Fehlermeldungen krieg ich keine. Die Permissions sind bei Write und Read alle gesetzt.

Hier noch der Quellcode und das .txt file:

Quellcode:
http://www.snowsession.ch/lernsite/gaestebuch_anschauen.html

.txt file:
http://www.snowsession.ch/lernsite/gaestebuch.txt

Danke für Eure Hilfe
Tyler

  1. Hallo Tyler,

    Nun lerne ich mit einem Buch gerade PHP und MySQL und habe da ein Beispielguestbook ausprobiert.

    versuche Dein Buch bei Ebay oder sonstwo günstig zu verkaufen und besorge Dir ein neueres, vor allem aber besseres Buch. Andere Möglichkeit: lerne über gute Onlinetutorials. Hinweise dazu findest Du z.B. in </archiv/2005/1/t98508/#m600562>.

    Die nutzt noch keine MySQL Datenbank, sondern legt die Daten in einem normalen .txt file ab. Leider funktioniert das Guestbook auf meinem Testserver einfach nicht.

    Das Beispiel geht davon aus dass PHP mit register_globals = on konfiguriert ist. Bereits seit langem ist register_globals = off die Standardeinstellung und das ist gut so.

    Greife auf die übermittelten Daten statt mit

    $sender
        $text

    mit

    $_POST['sender']
        $_POST['text']

    zu. Für die Überprüfung, ob etwas übermittelt wurde, vergleiche nicht mit einem Leerstring, sondern verwende Funktionen wie isset() und empty().

    Dann hab ich einfach mal das ganze auf meinem Webserver ausprobiert und siehe da, es funktioniert. Weiss jemand, an was das liegen könnte?

    Bei Deinem Provider ist "register_globals = on" gesetzt. Das ist meiner Meinung nach traurig.

    http://www.snowsession.ch/lernsite/gaestebuch_anschauen.html

    .txt file:
    http://www.snowsession.ch/lernsite/gaestebuch.txt

    Freundliche Grüße

    Vinzenz

    1. Hi Vinzenz,

      danke für deine schnelle Antwort. Das Buch hab ich ausgeliehen bekommen und nutze es nur um ein paar Basics zu lernen. Das eigentliche Guestbook soll ja dann auf MySQL basieren.

      Hast du gerade einen guten Vorschlag für ein passendes Buch dazu? Sollte halt auch für Einsteiger sein.

      Gruss
      Tyler

  2. Hallo,

    leider schreibst Du nicht, was nicht funkitioniert.
    Und immer und immer wieder: Alle Fehlermeldungen einschalten.

    Da Du von XAMMP sprichst, nehme ich an, dass Dein Server auf Windows-Basis läuft.

    Schau Dir das mal genauer an:

    if(file_exists($dateiname)) {
    $datei=fopen($dateiname, "r");
    if($datei) {
    include ($dateiname);
    }
    fclose($datei);

    Abgesehen davon, dass das eine dusselige Konstruktion ist, wird sie gemäß unserer Diskussion von neulich (noch nicht überprüft mangels eigenem Windows-PHP-Testsystem) eventuell für das Nichtfunktionieren verantwortlich sein. Auf Windows-Systemen (älterer Bauart) werden Dateien immer im Filemode 2 geöffnet. Das bedeutet, dass kein sharing möglich ist. Solange die Datei also mit dem Handle $datei gehalten wird, kann sie demnach mit include() nicht eingelesen werden.

    Diejenigen, die wissen, wovon ich schreibe und ein Windows-System mit PHP nutzen, könnten das bitte mal qualifiziert nachprüfen. Aber bitte das System dazu nennen. Bei NT ist der Standard-Öffnungsmodus nämlich "sharable".

    LG
    Chris