Kontaktformular

  • Hallo,


    ich habe mein Kontaktformular jetzt mal neu gemacht, allerdings läuft es nicht wie gewünscht.


    Das neue Formular findet ihr hier: neues Formular


    Folgendes Problem: wenn ich alle Felder ordnungsgemäß ausfülle und die Anfrage absende, erfolgt die Fehlermeldung: Es besteht Spamverdacht. Bitte Angaben überprüfen.

    Klickt man dann einfach nochmal auf "Absenden", geht die Anfrage raus. Woran liegt das bzw. was habe ich falsch gemacht?


    Wenn die Anfrage dann versendet ist, möchte ich gerne, dass das Formular ausgeblendet wird und dort steht: Mitteilung wurde erfolgreich versandt.

    Stattdessen erscheint die Mitteilung ganz oben über dem header links.


    Hier ist mein Quellcode dazu:


    Wäre schön, wenn mir jemand helfen kann, da ich von PHP eigentlich null Plan habe. :D

  • Wie so oft gilt auch hier:


    Richtig debuggen


    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

    Alles unter dem Strich ist eine Signatur!


    Die Deutsche Rechtschreibung ist Freeware, sprich, du darfst sie kostenlos nutzen. Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen!


    Zitat von Dieter Nuhr: "Wenn man keine Ahnung hat, einfach mal Fresse halten". Wie recht er doch hat...

  • Deine angegebene Meldung kann nur an dieser Stelle ausgegeben werden:

    PHP
    1. if($cfg['Honeypot'] && (!isset($_POST["mail"]) || ''!=$_POST["mail"])){ $fehler['Honeypot'] = "<span class='errormsg'>Es besteht Spamverdacht. Bitte überprüfen Sie Ihre Angaben.</span>"; }

    Was bedeutet, dass die Bedingung insgesamt true ergibt. Welche Konstellation dafür verantwortlich ist, musst Du rausfinden, ich tippe auf den honeypot.

    Aber es sind ja nur drei Bedingungskriterien, das ist überschaubar.



    EDIT:

    btw., was soll das:

    PHP
    1. !=$_POST["mail"])
  • Wie so oft gilt auch hier:


    Richtig debuggen


    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

    Also Punkt 2. und 3. hab ich jetzt gemacht. Somit würde ich gleich zu Punkt 8. übergehen und die Profis fragen, da ich von PHP (wie schon gesagt) keine Ahnung habe.

  • Warum lässt Du 5 und 6 vorsetzlich aus?

    Wenn Du 2 und 3 befolgt hast, ist doch die Frage, ob Du Fehler, Warnungen oder Hinweise bekommst. All diese Meldungen sind in PHP Gold wert, weil man den Fehler i.d.R. direkt ablesen kann.


    Wenn Du also Punkt 8 in Anspruch nimmst, solltest Du uns zeigen, was das Resultat aus 2 und 3 ist und welche Schritte Du mit welchen Ergebnissen für Punkt 4 und 5 durchgeführt hast.

  • Warum lässt Du 5 und 6 vorsetzlich aus?

    Wenn Du 2 und 3 befolgt hast, ist doch die Frage, ob Du Fehler, Warnungen oder Hinweise bekommst. All diese Meldungen sind in PHP Gold wert, weil man den Fehler i.d.R. direkt ablesen kann.


    Wenn Du also Punkt 8 in Anspruch nimmst, solltest Du uns zeigen, was das Resultat aus 2 und 3 ist und welche Schritte Du mit welchen Ergebnissen für Punkt 4 und 5 durchgeführt hast.

    Die Fehler werden jetzt angezeigt, aber wie bereits 2x schon erwähnt, verstehe ich das nicht. Wenn ich das verstehen würde, würde ich hier nicht um Hilfe bitten.

  • Zitat

    Die Fehler werden jetzt angezeigt

    Und die sind so geheim, dass du sie uns nicht sagen kannst?

    Alles unter dem Strich ist eine Signatur!


    Die Deutsche Rechtschreibung ist Freeware, sprich, du darfst sie kostenlos nutzen. Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen!


    Zitat von Dieter Nuhr: "Wenn man keine Ahnung hat, einfach mal Fresse halten". Wie recht er doch hat...

  • Die Fehler werden jetzt angezeigt, aber wie bereits 2x schon erwähnt, verstehe ich das nicht.

    ...und das verstehst Du auch nicht?

    Wenn Du also Punkt 8 in Anspruch nimmst, solltest Du uns zeigen, was das Resultat aus 2 und 3 ist

    ...oder meinst Du, wir raten hier jetzt, was die Fehlermeldungen sein könnten?

    DU musst uns schon mit den nötigen Infos füttern, wenn wir helfen sollen, d.h. i.d.R., relevanten Code posten, sowie Fehler, Warnungen und Hinweise ( Error, Warning, Notice ) in kompletter Form.


    "Habe ich gemacht, verstehe es aber nicht, helft mir mal" ist ne ganz schlechte Attitüde.

  • Notice: Undefined index: delete in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 27 Notice: Undefined index: Submit in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 32


    Das ist die Fehlermeldung über dem header.


    Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 368 Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 369 Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 370Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 390###i class="field" placeholder="Name" value="
    Notice: Use of undefined constant name - assumed 'name' in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 391

    Notice: Undefined index: name in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 391
    " maxlength="50" style="font-size: 16px; font-family: avenir-lt-w01_35-light1475496, sans-serif; color: rgb(0, 0, 102);"###

    Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 399###i class="field" placeholder="E-Mail" value="
    Notice: Use of undefined constant email - assumed 'email' in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 400

    Notice: Undefined index: email in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 400
    " maxlength="50" style="font-size: 16px; font-family: avenir-lt-w01_35-light1475496, sans-serif; color: rgb(0, 0, 102);"###

    Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 409


    ...und das im Formular.


    Sorry, ich dachte ihr guckt selber auf die Seite.

  • Notice: Undefined index: delete in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 27

    Code
    1. 27: if ($_POST['delete']){

    Notice: Undefined index: Submit in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 32

    Code
    1. 32: if ($_POST["Submit"]) {

    Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 368

    Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 369

    Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 370

    Code
    1. 368:     $fehler["Honeypot"] != "" ||
    2. 369: $fehler['Links'] != "" ||
    3. 370 $fehler['Badwordfilter'] != ""

    Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 390

    PHP
    1. 390: <div><?php if ($fehler["name"] != "") { echo $fehler["name"]; } ?>
  • $_POST['delete'] und $_POST["Submit"] existieren nicht -> isset


    $fehler ist nicht initalisiert und u.U gibt es auch nicht $fehler["name"]


    Das komplette Script ist recht unsauber programmiert.

    Alles unter dem Strich ist eine Signatur!


    Die Deutsche Rechtschreibung ist Freeware, sprich, du darfst sie kostenlos nutzen. Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen!


    Zitat von Dieter Nuhr: "Wenn man keine Ahnung hat, einfach mal Fresse halten". Wie recht er doch hat...

  • Aber viel besser ist es dadurch auch nicht geworden.

    Das verändert garnichts.

    Alles unter dem Strich ist eine Signatur!


    Die Deutsche Rechtschreibung ist Freeware, sprich, du darfst sie kostenlos nutzen. Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen!


    Zitat von Dieter Nuhr: "Wenn man keine Ahnung hat, einfach mal Fresse halten". Wie recht er doch hat...