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

Gästebuch !

skype90

Mitglied
Hey hallo da ich ein Php Neuling bin sozusagen wollt ich euch mal wieder paar Fragen zu einem Gästebuch skript stellen.

hier ist das Skript erstmal

PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$db = @new mysqli('localhost', 'benutzername', 'passwort', 'datenbak');
if (mysqli_connect_errno()) {
    die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}

readfile('header.html'); // enthält auch das <body>-tag

if ('POST' == $_SERVER['REQUEST_METHOD']) {
    // Code zum hinzufügen in der DB
} else {
    $sql = 'SELECT
                Datum,
                Autor,
                Inhalt
            FROM
                Guestbook
            ORDER BY
                Datum DESC';
    $result = $db->query($sql);
    if (!$result) {
        die('Der Query konnte nicht ausgeführt werden: '.$db->error);
    }
    if ($result->num_rows) {
        while ($row = $result->fetch_assoc()) {
            echo '<div class="beitrag">'."\n";
            echo '    <span class="autor">'.htmlspecialchars($row['Autor'])."</span>\n";
            echo '    <span class="datum">'.$row['Datum']."</span>\n";
            echo "    <p>\n";
            echo nl2br(htmlspecialchars(preg_replace('~\S{30}~', '\0 ', $row['Inhalt'])));
            echo "    </p>\n";
            echo "</div>\n";
        }
    } else {
        echo '<p class="info">Es sind keine Gästebucheinträge vorhanden</p>';
    }
    readfile('formular.html');
}

// [...]

if ('POST' == $_SERVER['REQUEST_METHOD']) {
    if (!isset($_POST['Autor'], $_POST['Inhalt'], $_POST['Antwort'], $_POST['formaction'])) {
        die ('Benutzen sie nur Formulare von der Homepage.');
    }
    if (('' == $autor = trim($_POST['Autor'])) or
            ('' == $inhalt = trim($_POST['Inhalt'])) or
            ('' == $antwort = trim($_POST['Antwort']))) {
        die ('Bitte füllen sie das Formular vollständig aus.');
    }
    if ('' != $antwort) { // entsprechend Anpassen, sowie den {FRAGE}-Teil im Formular
        die ('Sie müssen die Frage richtig beantworten.');
    }
    $sql = 'INSERT INTO
                Guestbook(Autor, Datum, Inhalt)
            VALUES
                (?, NOW(), ?)';
    $stmt = $db->prepare($sql);
    if (!$stmt) {
        die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error);
    }
} else {

}



if ('POST' == $_SERVER['REQUEST_METHOD']) {
    if (!isset($_POST['Autor'], $_POST['Inhalt'], $_POST['Antwort'], $_POST['formaction'])) {
        die ('Benutzen sie nur Formulare von der Homepage.');
    }
    if (('' == $autor = trim($_POST['Autor'])) or
            ('' == $inhalt = trim($_POST['Inhalt'])) or
            ('' == $antwort = trim($_POST['Antwort']))) {
        die ('Bitte füllen sie das Formular vollständig aus.');
    }


    if ('' != $antwort) { // entsprechend Anpassen, sowie den {FRAGE}-Teil im Formular
        die ('Sie müssen die Frage richtig beantworten.');
    }
    $sql = 'INSERT INTO
                Guestbook(Autor, Datum, Inhalt)
            VALUES
                (?, NOW(), ?)';
    $stmt = $db->prepare($sql);
    if (!$stmt) {
        die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error);
    }
    $stmt->bind_param('ss', $autor, $inhalt);
    if (!$stmt->execute()) {
        die ('Query konnte nicht ausgeführt werden: '.$stmt->error);
    }
    echo '<p class="info">Gästebucheintrag hinzugefügt. <a href="guestbook.php">Zurück zum Gästebuch</a>.</p>';
} else {
}

// [...]

 ?>

Habe soweit alles kapiert aber die Aufgabe verlangt das ich den Frage Teil im Formular und im php skript so bearbeite das es funktioniert.

PHP:
 if ('' != $antwort) { // entsprechend Anpassen, sowie den {FRAGE}-Teil im Formular
        die ('Sie müssen die Frage richtig beantworten.');
    }

Egal was ich im Frage Feld eingebe kommt die Meldung:Sie müssen die Frage richtig beantworten. Hmm hab echt überlegt wie ich das im skript umsetzte aber komme nicht auf eine Lösung ich bitte um Hilfe danke im vorraus.

Achja und hier ist das Formular

HTML:
<form action="guestbook.php" method="post">
    <fieldset>
        <legend>Ins Gästebuch Eintragen</legend>
        <label>Name: <input type="text" name="Autor" /></label>
        <label>Text: <textarea name="Inhalt" rows="6" cols="40"></textarea></label>
        <label>{FRAGE}: <input type="text" name="Antwort"/></label>
        <input type="submit" name="formaction" value="Eintragen" />
    </fieldset>
</form>

MFG

skype90
 
Diese Frage, Antwort geschichte soll denke ich mal ein Spam-Schutz sein. Da wo {FRAGE} steht, sollst du eine Frage hinschreiben. Zum Beispiel: Wieviel ist 7 plus 13.
Und bei der Antwort will er nun wissen ob es richtig ist. Könnte demnentsprechend so aussehen
PHP:
 if ('' != $antwort && $antwort == "20") { 
        die ('Sie müssen die Frage richtig beantworten.');
    }

Dass du deswegen 100%ig vor Spam-Bots geschützt sein wirst, kannst du dir aus den Kopf schlagen. Aber es ist immerhin besser als nichts :)
 
hmm ich kriege immer noch die meldung bitte beantworten sie die frage richtig obwohl ich ins frage feld 20 eingebe ... und ich habe mir mal den code angeschaut sagt der nicht aus wenn antwort ungleich ist und antwort gleich 20 dann gebe : Sie müssen die Frage richtig beantworten.

Soweit ich es richtig verstanden habe :S

Und da habe ich noch ne frage: Wozu dient das zeichen ' ' ?

if ('' != $antwort )

 
hmm ich kriege immer noch die meldung bitte beantworten sie die frage richtig obwohl ich ins frage feld 20 eingebe ... und ich habe mir mal den code angeschaut sagt der nicht aus wenn antwort ungleich ist und antwort gleich 20 dann gebe : Sie müssen die Frage richtig beantworten.

Soweit ich es richtig verstanden habe :S

Und da habe ich noch ne frage: Wozu dient das zeichen ' ' ?

if ('' != $antwort )

Sorry. natürlich auch != 20 :D. Habs in der ele wohl überlesen :)
 
Das skript funktioniert bloß wenn ich 20 bei dem Frage Teil eingebe kommt ein leere Datei aber ich will das man den gästebuch eintrag sieht wie mache ich das jetzt? und ich verstehe jetzt nicht warum != 20 ? Und wozu dient das Zeichen (") bei diesem Teil if ('' != $antwort ) ?



 
Zurück
Oben