Ankündigung

Einklappen
Keine Ankündigung bisher.

if x == x, funktioniert nur jedes 2. Mal

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • if x == x, funktioniert nur jedes 2. Mal

    Hallo zusammen,

    habe ein (für mich) sonderbares Problem mit einem Captcha in einem Formular. Problem macht diese Funktion ('aufgewertet' um möglichst verbose Ausgaben)

    1. Auf der Seite wird ein Formular geladen mit img include eines PHP Captcha. Dieses schreibt das aktuelle Captcha in eine Session-Variable 'captcha_spam'.
    2. Der User füllt das Formular inklusive Code aus, drückt dann submit
    3. Dieselbe Seite wird neu geladen, wurde 'submit' gedrückt, wird u.A. die Funktion "checkcaptcha()" ausgeführt. Diese soll '1' zurückgeben wenn der eingegebene Code nicht übereinstimmt, andernfalls '0'
    3a. Diese Funktion liefert immer '1' wenn der Code falsch war. Soweit OK.
    3b. Diese Funktion liefert jedes 2. Mal '1' wenn der Code richtig war.

    Wieso?
    Das Sonderbare ist hierbei, dass die richtigen Werte in der Funktion ankommen. Siehe unten Debug Ausgabe. Es ist also keinesfalls so, dass vielleicht irgendwo der falsche Code steht.

    PHP-Code:
    $captchaerror=checkcaptcha();

    function 
    checkcaptcha(){
        echo (
    ' captcha_spam: '.$_SESSION['captcha_spam']); //was ist in der Session?
        
    echo (' POST Code: '.$_POST['sicherheitscode']); // was wurde gepostet?
        
    if ('EpvYq' == 'EpvYq') echo ('EpvYq = EpvYq '); // einer der Fehler, denkt PHP falsch? (nein, diese Ausgabe kommt immer)
        
    if ($_SESSION['captcha_spam'] == $_POST['sicherheitscode'])
        {     echo 
    "<br> WAR identisch, gibt 0 zurück";
        return 
    0;
        }
        else { 
            echo 
    "<br> War NICHT identisch, gibt 1 zurück";
        return 
    1;
        
        };

    Debug-Ausgaben:
    Vor der Funktion: 0
    captcha_spam: PKVUL
    POST Code: PKVUL
    EpvYq = EpvYq
    War NICHT identisch, gibt 1 zurück
    Nach der Funktion: 1
    Captchaerror=1
    Captcha_Spam=PKVUL
    Post war: PKVUL

    ??

  • #2
    Lass mal den Wert aus der Session und den Wert aus POST per var_dump() ausgeben, dann siehst du besser ob da wirklich das selbe drin steht, es könnte beim String sein das irgendwo noch nen Leerzeichen steht.

    Kommentar


    • #3
      Danke für den super Tipp. Genau das ist offenbar das Problem
      PHP-Code:
          var_dump($_SESSION);
          
      var_dump($_POST); 
      Liefert mir 0 zurück, also war richtig
      ["captcha_spam"]=> string(5) "9CNV4"
      ["sicherheitscode"]=> string(5) "9CNV4"

      Liefert 1 zurück. Und jetzt verstehe ich auch wieso
      ["captcha_spam"]=> string(5) "uKB4B"
      ["sicherheitscode"]=> string(6) " uKB4B"

      Ein Leerzeichen am Anfang

      PHP ist also gar nicht doof, sondern ich

      Jetzt war der Fehler auch leicht zu finden:

      PHP-Code:
      <input type="text" id="sicherheitscode" name="sicherheitscode" value="<?php if ($captchaerror == 1) echo ("ungültiger Sicherheitscode"); ?><?php if ($captchaerror == 1) echo ("style=\"border-color:#ff0000\";"); ?> >
      Bei value="..."
      War ein Leerzeichen vor Beginn des <?php... arg!!!
      Ist zwar trotzdem sonderbar, denn eigentlich musste man ja sowieso "ungültiger Sicherheitscode" in dem Feld ersetzen, aber naja...

      Viele Dank!

      Kommentar

      Lädt...
      X