Einbau ins Script - Probleme mit der if Schleife-die zweite

Hier werden Probleme rund um das Zahlen Captcha behandelt

Moderator: frameguard

Einbau ins Script - Probleme mit der if Schleife-die zweite

Beitragvon hawu » 18.01.2007, 00:38

Hallo, ich habe leider auch das selbe Problem wie mein Vorgänger,

ich bekomme im bestehenden Formular die Rechenabufgabe und das dazugehörende Kontrollkästchen angezeigt.
Allerdings wird die Mail ohne Zahleingabe verschickt.

Hat jemand vielleicht Lust, sich mal den Code anzuschaun?

<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="{txt_content_direction}">
<head>
<title>{txt_script_name} {txt_script_version}</title>
<meta http-equiv="Content-Type" content="text/html; charset={txt_charset}" />

<style type="text/css">
<!--
} body {
font-family:Tahoma,Helvetica,Geneva,Sans-serif,sans-serif;
}


p, td, br, form, div, span, blockquote {
font-family:Tahoma,Helvetica,Geneva,Sans-serif,sans-serif;
font-size:9pt;
}


.index {
font-weight:bold;
}


#poweredby {
text-align:center;
}
-->
</style>

</head>

<body>

<h4>{txt_script_name}</h4>

<p>{txt_welcome_text}</p>


<!-- Display error messages (required fields etc.) -->
<LOOP NAME="message">
<blockquote style="color:#FF5F00;">
<p style="font-weight:bold;">{message}</p>
<blockquote>{fields}</blockquote>
</blockquote>
</LOOP NAME="message">


<!-- Display data -->
<LOOP NAME="display_data">

<table border="0" cellspacing="3" cellpadding="0">
<tr>
<td class="index">{txt_firstname}&nbsp;</td>
<td>&nbsp;</td>
<td>{firstname}</td>
</tr>
<tr>
<td class="index">{txt_lastname}&nbsp;</td>
<td>&nbsp;</td>
<td>{lastname}</td>
</tr>
<tr>
<td class="index">{txt_sender_email}&nbsp;</td>
<td>&nbsp;</td>
<td>{sender_email}</td>
</tr>
<tr>
<td class="index">{txt_friend_email}&nbsp;</td>
<td>&nbsp;</td>
<td>{friend_email}</td>
</tr>
<tr valign="top">
<td class="index">{txt_comment}&nbsp;</td>
<td>&nbsp;</td>
<td>{comment}</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

</LOOP NAME="display_data">


<!-- Display form -->
<IF NAME="display_form">
<form action="./index.php" method="post">
<input type="hidden" name="required_fields" value="lastname, sender_email, friend_email" />
<input type="hidden" name="email_fields" value="sender_email, friend_email" />
<input type="hidden" name="html_template" value="form.tpl.html" />
<input type="hidden" name="mail_template" value="mail.tpl.txt" />
<input type="hidden" name="redirect" value="{redirect}" />
<!--<input type="hidden" name="thanks" value="./docu/thanks.html" />-->


<table border="0" cellspacing="3" cellpadding="0">
<tr>
<td></td>
<td>&nbsp;&nbsp;&nbsp;</td>
<td>

<p>{txt_send_referer}</p>

<p><a href="{url}">{url}</a></p>

<br />

</td>
</tr>
<tr>
<td>{txt_firstname}</td>
<td>&nbsp;</td>
<td><input type="text" name="firstname" value="{firstname}" size="35" style="width:350px;" /></td>
</tr>
<tr>
<td>{txt_lastname}*</td>
<td>&nbsp;</td>
<td><input type="text" name="lastname" value="{lastname}" size="35" style="width:350px;" /></td>
</tr>
<tr>
<td>{txt_sender_email}*&nbsp;</td>
<td>&nbsp;</td>
<td><input type="text" name="sender_email" value="{sender_email}" size="35" style="width:350px;" /></td>
</tr>
<tr>
<td>{txt_friend_email}*&nbsp;</td>
<td>&nbsp;</td>
<td><input type="text" name="friend_email" value="{friend_email}" size="35" style="width:350px;" /></td>
</tr>
<tr>
<td valign="top">{txt_comment}&nbsp;</td>
<td>&nbsp;</td>
<td><textarea name="comment" cols="35" rows="6" wrap="virtuell" style="width:350px;">{comment}</textarea></td>
</tr>
<tr>
<td colspan="3"><br>
<p>Um Spam zu verhindern trage das Ergebnis rechts ein. Danke. </p>






<tr><td><img src="../rechen-captcha.php"></td>
<td><input type="text" name="sicherheitscode" size="4"></td>
</tr>
<br>
<br>


<?php
session_start();
function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "41hgkd632");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
if($sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
unset($_SESSION['rechen_captcha_spam']);
session_start();
unset($_SESSION['rechen_captcha_spam']);
$zahl1 = rand(10,20); //Erste Zahl 10-20
$zahl2 = rand(1,10); //Zweite Zahl 1-10
$operator = rand(1,2); // + oder -

if($operator == "1"){
$operatorzeichen = " + ";
$ergebnis = $zahl1 + $zahl2;
}else{
$operatorzeichen = " - ";
$ergebnis = $zahl1 - $zahl2;
}

function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}

$_SESSION['rechen_captcha_spam'] = encrypt($ergebnis, "29jfkd921"); //Key
$_SESSION['rechen_captcha_spam'] = str_replace("=", "", $_SESSION['rechen_captcha_spam']);

$rechnung = $zahl1.$operatorzeichen.$zahl2." = ?";
$img = imagecreatetruecolor(80,15);
$schriftfarbe = imagecolorallocate($img,13,28,91);
$hintergrund = imagecolorallocate($img,162,162,162);
imagefill($img,0,0,$hintergrund);
imagestring($img, 3, 2, 0, $rechnung, $schriftfarbe);
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);

}
?>








</td>
</tr>
<tr>
<td></td>
<td></td>
<td><br>
<br>
<input type="submit" name="mode_preview" value="{txt_preview}" /> <input type="submit" name="submit" value="{txt_submit}" /> <input type="reset" name="Zurück"/></td>
</tr>
</table>
</form>

<p>
* = {txt_mandatory_fields}
</p>
</IF NAME="display_form">

</body>
</html>



dies ist der Code des rechen-captcha.php, welches sich eine Ebene höher befindet:

<?php
session_start();
unset($_SESSION['rechen_captcha_spam']);
$zahl1 = rand(10,20); //Erste Zahl 10-20
$zahl2 = rand(1,10); //Zweite Zahl 1-10
$operator = rand(1,2); // + oder -

if($operator == "1"){
$operatorzeichen = " + ";
$ergebnis = $zahl1 + $zahl2;
}else{
$operatorzeichen = " - ";
$ergebnis = $zahl1 - $zahl2;
}

function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}

$_SESSION['rechen_captcha_spam'] = encrypt($ergebnis, "41hgkd632"); //Key
$_SESSION['rechen_captcha_spam'] = str_replace("=", "", $_SESSION['rechen_captcha_spam']);

$rechnung = $zahl1.$operatorzeichen.$zahl2." = ?";
$img = imagecreatetruecolor(80,15);
$schriftfarbe = imagecolorallocate($img,13,28,91);
$hintergrund = imagecolorallocate($img,162,162,162);
imagefill($img,0,0,$hintergrund);
imagestring($img, 3, 2, 0, $rechnung, $schriftfarbe);
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
?>


Es wäre nett, wenn ich eine Antwort bekommen würde, da die Zahlen als solches zwar recht nett aussehen, aber nix bewirken.


Vielen Dank im voraus.

Vielleicht noch der Link zur Homepage
- dann unter Weiterempfehlen

Harry
hawu
 
Beiträge: 1
Registriert: 18.01.2007, 00:31

Zurück zu Zahlen Captcha

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron