You are not logged in.

  • Login

1

Thursday, August 4th 2011, 9:42am

Captcha in Formular einbauen

Hallo,

Ich wollte soeben das CAPTCHA nach dem HowTo http://www.php-einfach.de/codeschnipsel_11208.php in mein Kontaktformular einabauen.

Soweit klappt dies auch, allerdings prüft er beim einegeben den Code nicht. Ob er Falsch oder Richtig ist ist im egal, das Formular kann ich absenden

Sowohl in der Klasse in erster Zeile als auch im Kontaktformular habe ich

PHP Quellcode

1
session_start();


eingefügt.

Zum Prüfen nutze ich folgendes:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Absenden
		if (isset($_POST['send']))
		{
			if($_POST['captcha'] != $_SESSION['captcha'])
   			{
				$message = 'Sie haben einen Falschen Sicherheitscode eingegeben';
   				$fehler = true;
   			} 
 
			// Kein Fehler aufgetaucht?
			if ( !isset($fehler) )
			{
                                       // Formular schicken
                                  }
                              }


Selbst wenn das Feld leer ist verschickt er das Formular.

Die Captch class wird per img tag im formular eingebunden. Die if abfrage findet in der contact.php statt

This post has been edited 1 times, last edit by "Fragz" (Aug 4th 2011, 9:54am)


2

Thursday, August 4th 2011, 10:40am

Wie kommt denn der Inhalt in $_POST['captcha'] ?

3

Thursday, August 4th 2011, 10:42am

Durch das input Feld

HTML Code

1
2
<label class="plabel"><img alt="captcha" src="./class/captcha_class.php" /></label>
       					<input name="captcha" type="text" id="captcha" size="41" /><br />

4

Thursday, August 4th 2011, 11:16am

ah okay ja klar kommt das so da rein ^^

Der Code für das Captcha ist genau gleich wie aus dem Tutorial oder hast du da was geändert?

5

Thursday, August 4th 2011, 11:32am

nein der wurde 1:1 übernommen

6

Thursday, August 4th 2011, 11:41am

Wie kommst du auf $_SESSION['captcha']?

Janiboy

Unregistered

7

Thursday, August 4th 2011, 11:43am

Lasse $_SESSION['captcha'] mal ausgeben. Vielleicht ist die einfach nur leer

8

Thursday, August 4th 2011, 5:00pm

Hallo,

Hm, leer ist es. Gebe ich was zeigt er mir an das der Code falsch ist. Gebe ich nix ein klappt das Versenden.
Normal sollte das anders sein.

Kann ich sein das ich es evtl falsch eingebunden habe?

9

Thursday, August 4th 2011, 5:59pm

Schau dir doch wenigstens den fremden Code an. $_SESSION['captcha'] taucht dort im Gegensatz zu $_SESSION['zeichen'] nicht auf.

10

Thursday, August 4th 2011, 6:37pm

Genau, dies ist mir gerade aufgefallen.

Selbst wenn ich alles auf $_SESSION['zeichen'] änder bleibt das Problem bestehen.

11

Friday, August 5th 2011, 10:06am

Also irgendwie scheint das gesamte Script nicht so richtig zu laufen.

Habe das jetzt so gelöst, in der Methode create() habe ich ganz am ende wo die $_SESSION erstellt wird was geändert

PHP Quellcode

1
$_SESSION['zeichen'] = $zeichen; imagepng($this -> bild, 'this.png');



und die andere Datei sieht jetzt so aus:

PHP Quellcode

1
<?php	require("test.php");	$c = new captcha(); 	$c -> rauschen = 1000; 	$c -> create(); ?><img src="this.png" />asds



Erklärung:

Das Problem liegt an dem header(), du wechselst damit ja den typen der Datei (also von normal html zu einem Image) also macht der Browser daraus ein Bild und der Rest funktioniert dann halt nicht mehr.

Similar threads

Social bookmarks