Gästebuch-logischer Fehler?

  • Hallo,


    ich beschäftige mich erst seit kurzer Zeit mit PHP und habe nun versucht ein Gästebuch(ohne Datenbanken) zu erstellen.
    Der ganze untere PHP wird als action eines Formulars aufgerufen , dass die Werte per post übergibt.
    Das Ganze produziert auch keine Fehlermeldung, oder ähnliches, von daher vermute ich , dass es sich um einen Fehler
    bei str_replace handelt.


    Die Variablen $inhalt und $eintrag stimmen genau, nur das Schreiben in die andre Datei funktioniert nicht.
    Der Zugriff auf die Datei ist aber gewährleistet, und es wird auch im Editor gefragt ob neu geladen werden soll,
    weil von draußen darauf zugegriffen wird. Nur ändert sich der Inhalt nicht..
    Und die Ausgabe von $ersetzen scheint fehlerhaft zu sein....


    Hier einmal der Code:



    Hoffe ihr könnt mir da ein wenig weiterhlefen :thumbup:


    mfg Nita

  • Etwas ungewöhnlich den ganzen HTML-Kram mit in die Datei zu schreiben. =)


    PHP
    // str_replace(search, replace, subject)
    $ersetzen = str_replace("<!--Begin-->", $eintrag, $inhalt);


    <!--Beginn... wird gesucht. Und (nur) wenn vorhanden mit $eintrag ersetzt.
    Es wird wohl kein <!--Beginn... in der Datei stehen.
    (Wozu eigentlich?)

  • Etwas ungewöhnlich den ganzen HTML-Kram mit in die Datei zu schreiben. =)


    PHP
    // str_replace(search, replace, subject)
    $ersetzen = str_replace("<!--Begin-->", $eintrag, $inhalt);


    <!--Beginn... wird gesucht. Und (nur) wenn vorhanden mit $eintrag ersetzt.
    Es wird wohl kein <!--Beginn... in der Datei stehen.
    (Wozu eigentlich?)


    So habs nach mehrmaligen durchschauen noch gefunden. Ein Englisches Begin und ein Deutsches Beginn
    sind eben doch nicht ganz das Gleiche ;)


    Wie sollte man denn mit dem HTML-Kram am besten umgehen?


    Das Beginn wird gesucht, um den Beitrag immer ganz oben anzufügen und die Verweise auf Styhlesheets und
    includede Daten nicht zu überschreiben / zu löschen. Aber auch da würde es vermutlich, eine mir
    unbekannte bessere Lösung geben :9


    mfg Nita

  • Sehe gerade, dass Der Eintrag ja direkt in das php File geschrieben wird.
    Das kann gefährlich werden.
    Warum:
    Du weiß sicherlich, dass man mitten im HTML code PHP nutzen kann. Dabei öffnet man mit
    <?php
    und schließt mit
    ?>


    Das heißt, dass ein Eintrag (Variable $kommentar) mit dem Text:

    PHP
    <?php exit; ?>


    Auf Deiner Seite ausgeführt wird.


    Man kann (und sollte sowieso) sämtliche Benutzereingaben behandeln (Stichwort htmlspecialchars() oder htmlentities() ),
    aber ich würde trotzdem davon abraten PHP Dateien mit Benutzereingaben zu beschreiben.


    Was Du schon mal machen kannst:
    Das hier:

    PHP
    $name = $_POST['name'];
    $email = $_POST['email'];
    $kommentar = $_POST['kommentar'];


    mit dem hier ersetzen:

    PHP
    $name = htmlspecialchars($_POST['name']);
    $email = htmlspecialchars($_POST['email']);
    $kommentar = htmlspecialchars($_POST['kommentar']);


    (htmlspecialchars() siehe: http://php.net/manual/de/function.htmlspecialchars.php)

    Zitat

    htmlspecialchars — Wandelt Sonderzeichen in HTML-Codes um


    Dadurch wird zB das Zeichen < zu &lt;


    Und am Bsp von oben:
    <?php exit; ?> wird zu &lt;?php exit; ?&gt;gt;


    INFO: im Browser werden diese Zeichen wieder normal angezeigt. Er wandelt die HTML-Codes in Benutzerfreundliche Zeichen um.
    Wenn Du Dir aber den Quellcode ansiehst (Rechtsklick "Quelltext anzeigen"), dann siehst Du das, was der Browser als "Rohdaten" bekommt.


    Ich will Dich jetzt nicht noch mehr verwirren. Du kannst die Variante nutzen.
    Aber Du musst darauf achten, dass Du keine Benutzereingaben vergisst zu maskieren.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!