captcha klappt nicht

Hallo,

ich hab ein ganz simples captcha gebastelt, nur versteh ich nicht warum das ganze nicht klappt.

Also das Captcha an sich baue ich in der captcha.php Datei zusammen:

[CODE]<?php
session_start();

// Session Variable löschen
unset($_SESSION[‚captcha-wert‘]);
// alle moeglichen Zeichen ohne Problemfälle
$moegliche_zeichen
= „A B C D E F G H J K M N Q R T U V W X Y 2 3 4 5 7 8“;
// erstellen eines Arrays
$kombinationen = explode(" ", $moegliche_zeichen);
// mischen des Arrays
shuffle ( $kombinationen );
// die ersten 4 Zeichen aus dem gemischten Array
$text = array_slice($kombinationen, 0, 4);
// Speicherung in SESSION-Variable für spätere Auswertung
$_SESSION[‚captcha-wert‘] = $text;
Header („Content-type: image/png“);
// Laden der Bild - Datei

$bild = ImageCreateFromPNG („captcha_background.png“);
// Farben definieren
$farbe_w = ImageColorAllocate ($bild, 255, 255, 255);
$farbe_b = ImageColorAllocate ($bild, 0, 0, 0);

// Schriftgröße, Winkel, X-Pos., Y-Pos, Farbe, Schrift, Inhalt
ImageTTFText ($bild, 12, 0, 5, 20, $farbe_b, „/fonts/font.ttf“,
$text[0]);
ImageTTFText ($bild, 12, 0, 25, 20, $farbe_b, „/fonts/font.ttf“,
$text[1]);
ImageTTFText ($bild, 12, 0, 45, 20, $farbe_b, „/fonts/font.ttf“,
$text[2]);
ImageTTFText ($bild, 12, 0, 65, 20, $farbe_b, „/fonts/font.ttf“,
$text[3]);
// Ausgabe im Format PNG
ImagePng ($bild);
// Ressourcen wieder freigeben
ImageDestroy ($bild);

?>[/CODE]

Die Abfrage mache ich in einem anderem Formular captcha_test.php:

[CODE]<?php session_start();?>

Captcha:



Eingabe:


<?php // Abfrage ob Captcha - Wert gleich if(isset($_POST["send"])) { if ($_POST['name'] == $_SESSION['captcha-wert']) { echo "Captcha Wert richtig"; } else { echo "Falscher Captcha Wert"; } } ?>[/CODE]

Eigentlich nichts besonderes. Trotzdem kommt im der If - Abfrage immer der else Zweig das der Code nicht identisch ist raus.

Warum nur?

Danke schon mal

Da sind 2 Dinge falsch:

  1. Du speicherst ein Array in der Session
  2. Dein Überprüfung kommt nach dem Aufruf von captcha.php und somit steht in der Session ein anderer Wert.

Danke für die Antwort.

Zu 1.
Ich will ja ein Zufalls Array aus den Buchstaben und Zahlen bauen und in der $_SESSION[‚captcha-wert‘] - Variablen speichern. Warum darf ich dann dieses Array mit der Zahlen/Buchstaben - Kombination, welche im Captcha_Background.png Bild angezeigt wird, nicht in einer Session Variablen speichern?

Zu 2.
Ich muss ja erst das Captcha in der captcha.php Datei erstellen. In der Datei wird der Array Wert in einer Session - Variablen gespeichert.
Erst wenn das Captcha erstellt ist, kann ich nach der Formular Absendung den Wert mit dem eingegebenen Wert vergleichen oder?

Eine Session-Variable bleibt doch so lange mit einem Wert besetzt, bis der Browser geschlossen wird oder lieg ich da falsch?

Hier schreibst du ein Array in die Session
$_SESSION[‚captcha-wert‘] = $text;

Hier vergleichst du mit einem String:
if ($_POST[‚name‘] == $_SESSION[‚captcha-wert‘])

Du vergleichst also Äpfel mit Birnen, oder anders gesagt, ein String mit einem Array. Wie soll das funktionieren??

Ja stimmt, hab ich gar nicht bedacht. danke :wink:

Muss ich nun den String vom eingabefeld erst in ein Array packen oder wie soll ich das lösen?

[php]$_SESSION[‚captcha-wert‘] = implode(‚‘, $text);[/php]

Danke für die Hilfe. Jetzt klappts :wink: