hi folks
ich hab das Problem dass ich einen Captcha in das Kontaktformular einbinden möchte,
was auch einigermassen geht, zumindest wird das bild angezeig jedoch kann ich das
Formular abschicken auch wenn das Captcha nicht oder Falsch ausgefüllt ist.
session_start() wird in der index.php gestartet da formular.php dort included wird und
die session muss ja ganz am anfang stehen wenn ich das richtig gelesen habe. Ich weiss
dass es noch nicht wirklich sauber gecoded ist aber ich möchte halt einfach mal das es
funktioniert.
Danke schon im voraus
captcha.php
formular.php
ich hab das Problem dass ich einen Captcha in das Kontaktformular einbinden möchte,
was auch einigermassen geht, zumindest wird das bild angezeig jedoch kann ich das
Formular abschicken auch wenn das Captcha nicht oder Falsch ausgefüllt ist.
session_start() wird in der index.php gestartet da formular.php dort included wird und
die session muss ja ganz am anfang stehen wenn ich das richtig gelesen habe. Ich weiss
dass es noch nicht wirklich sauber gecoded ist aber ich möchte halt einfach mal das es
funktioniert.
Danke schon im voraus
captcha.php
PHP:
<?php
## CAPTCHA ##
// Session starten
session_start();
// Größe des Bildes
$size_x = 70;
$size_y = 25;
// Erzeuge eine Zufallszahl
$zufallszahl = mt_rand("100000", "999999");
// Zufallszahl der Session-Variablen übergeben
$_SESSION["captcha_code"] = $zufallszahl;
// Erstelle das Bild mit der angegebenen Größe!
$bild = imageCreate($size_x, $size_y);
// Erstelle einen weißen Hintergrund
imageColorAllocate($bild, 255, 255, 255);
// Zufallsfarbe (RGB) erstellen
$farbe1 = mt_rand("0", "175");
$farbe2 = mt_rand("0", "175");
$farbe3 = mt_rand("0", "175");
// Verteile die Farben
$rahmen = imageColorAllocate($bild, 0, 0, 0); // Rahmenfarbe
$farbe = imageColorAllocate($bild, $farbe1, $farbe2, $farbe3); // Textfarbe
// Hole die Zahlen der Punkte zum Zeichnen
$alle_punkte = ($size_x * $size_y)/15;
// Zeichne viele Punkte mit der selben Farbe des Textes
for ($zaehler = 0; $zaehler < $alle_punkte; $zaehler++) {
// Erzeuge die Zufallspositionen der Punkte
$pos_x = mt_rand("0", $size_x);
$pos_y = mt_rand("0", $size_y);
// Zeichne die Punkte
imageSetPixel($bild, $pos_x, $pos_y, $farbe);
};
// Zeichne den Rahmen
imageRectangle($bild, 0, 0, $size_x-1, $size_y-1, $rahmen);
// Koordinaten der Position von der Zufallszahl
$pos_x = 8; // links
$pos_y = 5; // oben
// Zeichne die Zufallszahl
imageString($bild, 5, $pos_x, $pos_y, $zufallszahl, $farbe);
// Sende "browser header"
header("Content-Type: image/png");
// Sende das Bild zum Browser
echo imagePNG($bild);
// Lösche das Bild
imageDestroy($bild);
?>
formular.php
PHP:
<?php
error_reporting(0);
?>
<h1>Kontaktformular</h1>
<?php
require_once ( 'includes/library.php' );
if ( $_POST['name'] == "" or $_POST['vorname'] == "" or $_POST['mail'] == "" or !is_mail($_POST['mail']) ){
?>
<form action="index.php?menu=formular" method="post" >
<?php
if ( $_POST['name'] == "" AND $_POST['abgesendet'] == "ja" ){
echo '<span>Bitte einen Namen eingeben</span>'."\n".'<br />'."\n";
}
if ( $_POST['vorname'] == "" AND $_POST['abgesendet'] == "ja" ) {
echo '<span>Bitte einen Vornamen eingeben</span>'."\n".'<br />'."\n";
}
if ( $_POST['mail'] <> "" )
{
if ( is_mail($_POST['mail']) == false )
{
echo '<span>E-Mail-Adresse ist Falsch - korrigieren</span>'."\n".'<br />'."\n";
$_POST['mail'] = "";
}
}
if ( $_POST['mail'] == "" AND $_POST['abgesendet'] == "ja" )
{
echo '<span>Bitte eine Email-Adresse eingeben</span>'."\n";
}
// Captcha überprüfen
if ($_SESSION["captcha_code"] = "" AND $_POST["captcha"] != $_SESSION["captcha_code"]) {
echo '<span>Captcha ist Falsch bitte neu eingeben</span>';
}
// Session löschen
unset($_SESSION['captcha_code']);
?>
<p>
<label for="name"><span>*</span>Name:
<input type="text" name="name" value="<?php echo $_POST['name'] ; ?>" />
</label>
</p>
<p>
<label for="vorname"><span>*</span>Vorname:
<input type="text" name="vorname" value="<?php echo $_POST['vorname'] ; ?>" />
</label>
</p>
<p>
<label for="mail"><span>*</span>Email:
<input type="text" name="mail" value="<?php echo $_POST['mail'] ; ?>" />
</label>
</p>
<p>
<img src="captcha/captcha.php" width="70" height="25" alt="" style="vertical-align: middle;">
<input type="text" name="captcha" size="6">
</p>
<input type="hidden" name="abgesendet" value="ja" />
<input type="submit" value="Absenden" />
</form>
<?php
}else{
?>
<p>Vielen Dank für Ihr Intresse</p>
<?php
$header = 'From: artwebdesign.ch' . "\r\n";
$empfaenger = "[email protected], [email protected]";
$betreff = "Webdesign Anfrage ";
$inhalt = "Anfrage von ". $_POST['name'] . $_POST['vorname'] ;
$inhalt .= "Anfrage von Email ". $_GET['mail'] ;
mail ( $empfaenger, $betreff, $inhalt, $header ) ;
}
?>