Gästebuchformular Eingaben notwendig

  • Hi Leute,


    folgendes Problem. Ich möchte das die Angaben in meinem Gästebuchformular (Name, Mail,etc..) notwendig sind und nicht unausgefüllt gelassen werden können. Desweiteren möchte ich noch einen Resetbutton hinzufügen, der das ganze Formular leert und vorerst eine Frage stellt (echo) ob das wirklich geschehen soll. Ich hoffe ihr könnt mir helfen.


    Danke im Vorraus


  • Hast du denn eigene Ansätze, wie man das lösen könnte? Wir werden dir hier keinen fertigen Code schreiben.


    Felder notwendig machen, funktioniert in HTML nicht gleich im Formular. Du musst es per PHP überprüfen lassen und den Benutzer das Formular gegebenenfalls nochmal ausfüllen lassen.
    Wenn du nicht weißt, wie das in PHP geht -> PHP-Kurs


    Vor dem Resetten eine Frage stellen, musst du in JavaScript lösen. Die enstprechende Funktion lautet "confirm()".
    In die Klammern schreibst du den Text, der in die Frage-Box soll. Als Rückgabewert wird bei Klick auf "OK" true zurückgegeben, sonst false.
    Dies kannst du z.B. in den onSubmit-Handler des Buttons schreiben.

  • Noch ein paar Fragen,


    wie kann ich ausschließen das jemand meinen Namen benutzt...oder das man, wenn man meinen Namen benutzt erst ein Passwort eingeben muss?
    Desweiteren bekomme ich jetzt schon "Viagra-Mails". Kann man das auch unterbinden?


    Danke im Vorraus

  • Indem du überprüfst, ob jemand deinen Namen benutzt und wenn ja, entweder nach einem Passwort fragst oder abbrichst.


    Kommt drauf an, ob die Mails über das Kontakt-Formular oder als normale E-Mail kommen. Beim Kontak-Formular kannst du Spam z.B. mit einem Captchaerschweren.

  • So...bin jetzt dabei das mit dem Captcha zu versuchen...
    Ich will nur noch vorwegnehmen, dass ich ein Anfänger bin. Also für Hilfe bin ich zu haben und Tips/Kritik nehme ich auch gerne an.


    Danke


    Gästebuch.php mit kompletter Fehlerüberprüfung


    Einzelne Codeschnipsel:


    Captchawert Fehlerüberprüfung: (Ist das soweit richtig?)

    Code
    if($_POST['code'] == "" xor $_POST['code'] != $SESSION['captcha-wert'])
                        {
                            $errors['code'] = 'Code was wrong or empty!';
                        }


    Eingabe des Codes: (Kann ich hier was verändern/besser machen?)(Bild wird nicht ausgegeben!)

    Code
    Please type the following code: <br />
    <img src="captcha.php" id="code" border="0" title="Code"/><br />
    <label>Code:'.getError($errors['code']).'
    <input type="text" name="code" size="20" maxlength="5" value="'.$_POST['code'].'" /><br /></label>



    Captcha.php

  • Also erstens verwende im Allgemeinen lieber OR anstelle von XOR, da du sonst ein Problem bekommen könntest wenn die Eingabe leer ist.
    Schließlich würden dann beide Aussagen stimmen (true) [Der String ist == "" Und er wird nicht den gleichen Wert haben wie der Wert aus der Session] und er würde durch das XOR nicht in die Anweisung springen.


    Wird das Captcha den angezeigt, wenn du es direkt angehst?
    Ist der Pfad zu dem Captcha ansonsten Falsch?^^


    Noch was Allgemeines:
    Bei Passwortfeldern und bei nem Captcha sollte kein Wert in das value-Feld :wink:
    Erklärt sich denke ich von selbst, oder? :D

  • Zitat von &quot;Sarkkan&quot;

    Also erstens verwende im Allgemeinen lieber OR anstelle von XOR, da du sonst ein Problem bekommen könntest wenn die Eingabe leer ist.
    Schließlich würden dann beide Aussagen stimmen (true) [Der String ist == "" Und er wird nicht den gleichen Wert haben wie der Wert aus der Session] und er würde durch das XOR nicht in die Anweisung springen.


    Das werde ich dann noch ändern


    Zitat

    Wird das Captcha den angezeigt, wenn du es direkt angehst?
    Ist der Pfad zu dem Captcha ansonsten Falsch?^^


    Hmm...normalerweise sollte doch das Bild durch die captcha.php generiert werden und dann da ausgegeben werden.


    Zitat

    Noch was Allgemeines:
    Bei Passwortfeldern und bei nem Captcha sollte kein Wert in das value-Feld :wink:
    Erklärt sich denke ich von selbst, oder? :D


    Und wo schreib ich es dann am besten hin?

  • Zitat von &quot;revils&quot;

    Hmm...normalerweise sollte doch das Bild durch die captcha.php generiert werden und dann da ausgegeben werden.


    Steuere mal bitte mit deinem Browser die Datei 'captcha.php' direkt an. Solltest du ein Bild bekommen ist der Pfad von der Formular zum Captcha falsch.
    Erhältst du eine Fehlermeldung, weißt du, was du tun musst :P


    Zitat von &quot;revils&quot;

    Und wo schreib ich es dann am besten hin?


    Nirgends? :/ Ich meine.. wenn mein Passwort falsch ist, muss mein falsch eingegebenes Passwort, welches ich nicht mal sehen kann, doch nicht mehr in das Feld, oder?
    Und bei dem Captcha ist es ähnlich.. wenn ich es falsch eingebe, dann nützt es mir kaum etwas, wenn ich meine falschen eingabe wieder sehe, da ja ein neues Captcha generiert wird :/

  • Alles klar, funktioniert...Bild wird angezeigt und Code kommt auch


    ABER


    Der Code wird nicht angenommen...das Problem hatte schon jemand hier...weiß nur nicht wie das zu lösen geht.
    Liegt auf jedenfall daran, dass ich einen String mit einem Array vergleichen will oder so.

  • Du musst das Array zu einem String zusammenführen und dann erst in der Session-Variable speichern.
    Das geht, denke ich, am einfachsten mit der Funktion implode.


    Bei dir würde das dann ungefähr so aussehen:

    PHP
    <span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'captcha-wert'</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">implode</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$text</span><span class="syntaxkeyword">); </span><span class="syntaxcomment">// Unterstrich vor SESSION nicht vergessen! </span><span class="syntaxdefault"></span>
  • Wo schreib ich denn den Code hin in dem ich das Array zum String mache?
    Ich gehe mal davon aus, dass das damit ($_SESSION['captcha-wert'] = implode($text);) nicht geht

  • Alles klar, ich habs geschafft


    Der Fehler lag an der Eingabebereinigung (Die hatte ich 2x drin). Einmal ganz oben nach dem "session_start()" und einmal in der letztn if-Anweisung in der der Eintrag dann in die Datenbank erfolgt (und da musste sie raus)



    Danke für eure Hilfe

Jetzt mitmachen!

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