[PHP] Captcha richtig einsetzen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Buzzer, 27. August 2012 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 27. August 2012
    Captcha richtig einsetzen

    Hey Leute,

    ich hoffe ihr könnt mir helfen, ich stehe gerade auf dem Schlauch und drehe mich im Kreis.

    Ich habe eine php Seite die ein Captcha enthält. Wird es korrekt ausgefüllt wird man mit header Location auf die body.php umgeleitet.

    Code:
    if ( md5($_SESSION["captcha"]) == md5($_POST["sicherheitscode"]))
     {
     $Fehlerfrei = TRUE;
     $_SESSION["captchaErfolgreich"] = $Fehlerfrei;
     header("Location: body.php");
     exit;
     
     
     
     }else {
     echo "<h2>Das Formular wurde NICHT korrekt ausgefuellt!</h2>";
     $Fehlerfrei = FALSE;
     $_SESSION["captchaErfolgreich"] = $Fehlerfrei;
     }
    Das klappt auch einwandfrei.

    In der body.php wiederrum includiere ich eine auth.php, welche dafür sorgen soll das der in der Session abgespeicherte Wert "captchaErfolgreich" abfragt.

    Das heißt ich möchte das man die body.php nur sehen kann wenn der Wert in der Session auf TRUE ist.
    Außerdem sollte der Wert beim erneuten Aufrufen der body.php gelöscht werden.

    (Einfach gesprochen, ich will das man jedes mal wenn man die Seite aufruft das Captcha neu lösen muss)

    meine PHP Kenntnisse sind nicht der Wahnsinn und irgendwie verheder ich mich in den Umleitungen.

    Vll kann mir jemand auf die Sprünge helfen.
     
  2. 27. August 2012
    AW: Captcha richtig einsetzen

    Klingt ziemlich simpel und ein Teil des Codes steht schon.

    Du hast also 2 Dateien:
    - captcha.php (habe ich jetzt mal so genannt), in der man das Captcha eingeben muss
    - body.php, zu dieser gelangt man nach korrekter Eingabe des Captchas

    Ein Teil steht ja jetzt schon: captcha.php -> body.php

    In der body.php sollte es genügen, wenn du $_SESSION['captchaErfolgreich'] überprüfst und anschließend zurücksetzt, zB so:
    PHP:
    if (!isSet( $_SESSION [ 'captchaErfolgreich' ]) OR ! $_SESSION [ 'captchaErfolgreich' ]) {
      
    header ( "Location: captcha.php" );
      exit;
    }
    unset(
    $_SESSION [ 'captchaErfolgreich' ]);
    // weiterer Code
    Da ich nicht erraten kann, ob die captcha.php spezielle POST- oder GET-Werte braucht, kann ich dir nicht konkreter helfen
     
    1 Person gefällt das.
  3. 30. August 2012
    AW: Captcha richtig einsetzen

    Das hat wunderbar geklappt

    was macht der Vergleich eigentlich genau? Also wenn man es mit worten beschreiben würde ala "Wenn das oder das dann das" Nur damit ich es auch genau verstehe.
     
  4. 30. August 2012
    Zuletzt bearbeitet: 30. August 2012
    AW: Captcha richtig einsetzen

    gibt es $_SESSION['captchaErfolgreich'] nicht oder ist $_SESSION['captchaErfolgreich']=false
    PHP:
    if (!isset( $_SESSION [ 'captchaErfolgreich' ]) OR ! $_SESSION [ 'captchaErfolgreich' ])
    dann tu was.
    in deinem fall
    PHP:
    header ( "Location: captcha.php" );
    exit;
     
    1 Person gefällt das.
  5. 31. August 2012
    AW: Captcha richtig einsetzen

    Vielen Vielen Dank, das mit "gibt es nicht" war mir nicht bewusst. Hat mir sehr geholfen.

    Kannn mir vll. noch jemand ganz kurz bei einer Abfrage helfen?

    Ich habe eine mysql Tabelle mit einer Spalte "date" vom Typ timestamp, jetzt will ich diesen Wert auslesen, am besten formatieren und als Variable ausgeben. Außerdem soll nur der letzte Wert genommen werden(MAX(date))

    Habe es so probiert:

    Code:
    $Date = mysql_query("SELECT DATE_FORMAT(date, '%d.%m.%Y')FROM tabelle WHERE date = (SELECT MAX(date) FROM tabelle)");
    aber das klappt nicht.
     
  6. 31. August 2012
    AW: Captcha richtig einsetzen

    "das klappt nicht" - hilft dir selbst und auch allen anderen nichts. Wenn bei einer MySQL-Anweisung etwas nicht funktioniert, gibt es die Möglichkeit, eine Fehlermeldung auszugeben. Das solltest du tun.

    Ich schätze mal, dass es damit zusammenhängt, dass dein Feld date heißt, wobei DATE schon vergeben ist. Du könntest zB dein Feld in Anführungszeichen setzen.

    Code:
    SELECT `date` FROM tabelle ORDER BY `date` DESC LIMIT 1
    Und dann
    PHP:
    $datum  date ( 'd.m.Y' $timestamp );
    So würde ich das lösen
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.