Hallo!
Hatte so eine ähnliche Idee.
Eine Rechenaufgabe die man sich alternativ auch vorlesen lassen kann.
Funzt eigentlich auch.
Nur bekomm ich es nicht hin Die Rechnung als Bild auszugeben (zumindest nicht so dass Bild und Audio die gleiche Rechung enthalten
Hier mal was ich bis jetzt hab:
captcha_generator.php
<?php
// Zufallsrechnung erzeugen und Ergebnis (verschlüsselt) in Variable schreiben
$counter = 0;
while($counter == 0){
unset($result);
// 2 zufällige Zahlen erzeugen
$zahl1 = mt_rand(1,20);
$zahl2 = mt_rand(1,10);
// Rechenart zufällig festlegen
$arithmetic_arr = array('+', '-');
$arithmetic = $arithmetic_arr[mt_rand(0,1)];
// Ergibnis berechnen
if($arithmetic == '+'){$result = $zahl1 + $zahl2;}
else{$result = $zahl1 - $zahl2;}
// Prüfen ob Ergebnis grösser 0 (Null) ist, also positiv.
// Wenn ja: Schleife beenden. Wenn nein: das Ganze nochmal bis ein positives Ergebnis rauskommt
if($result > 0){
$result = hash(md5, $result);
break;
}
}
// Zufallsrechnung in Variable schreiben
$cc = $zahl1.' '.$arithmetic.' '.$zahl2;
// Audiocaptcha aus der Zufallsrechnung erzeugen und in Variable schreiben
$cc_fe = str_replace(' ', '|', $cc);
$mp3 = explode('|', $cc_fe);
$mp3_path = 'mp3/';
$mp3_arr = array(
'1' => '6hcbf8gn.mp3',
'2' => 'jdl8fp6j.mp3',
'3' => '5yfvwik8.mp3',
'4' => '26zfysg5.mp3',
'5' => 'qrc6mnem.mp3',
'6' => 'v56vehfu.mp3',
'7' => 'bz9aswxs.mp3',
'8' => 'teczts9a.mp3',
'9' => 'ly4lthwh.mp3',
'10' => '57k1ag08.mp3',
'11' => '27bmk16b.mp3',
'12' => 'ix6buawm.mp3',
'13' => 'r3onty0j.mp3',
'14' => '7kw3jtpx.mp3',
'15' => 'jx9km1bm.mp3',
'16' => '98dsmneh.mp3',
'17' => '0x9k3d7b.mp3',
'18' => 'k4jejm8s.mp3',
'19' => 'hlu5fbof.mp3',
'20' => 'a0zu7bvk.mp3',
'+' => '11llrlsi.mp3',
'-' => '2rxf6a84.mp3',
'start' => '271t0wia.mp3'
);
foreach($mp3_arr as $key => $value){
$mp3_1 = $mp3_path.str_replace($mp3[0], $value, $mp3_arr[$mp3[0]]);
$mp3_2 = $mp3_path.str_replace($mp3[1], $value, $mp3_arr[$mp3[1]]);
$mp3_3 = $mp3_path.str_replace($mp3[2], $value, $mp3_arr[$mp3[2]]);
}
$audio_captcha = '<object type="application/x-shockwave-flash" data="'.$mp3_path.'emff_easy_glaze_small.swf" width="22" height="22">
<param name="movie" value="'.$mp3_path.'emff_easy_glaze_small.swf">
<param name="FlashVars" value="src='.$mp3_path.'271t0wia.mp3,'.$mp3_1.','.$mp3_2.','.$mp3_3.'&repeat=yes">
</object>';
unset($cc_fe);
?>
Alles anzeigen
index.php
<?php
include('captcha_generator.php');
function captcha(){
$font = 'arial.ttf';
header ("Content-type: image/png");
$im = imagecreate (100, 20);
$black = imagecolorallocate ($im, 0, 0, 0);
$color[] = imagecolorallocate ($im, 255, 255, 255);
$color[] = imagecolorallocate ($im, 255, 255, 0);
$color[] = imagecolorallocate ($im, 0, 255, 0);
$color[] = imagecolorallocate ($im, 0, 255, 255);
$color[] = imagecolorallocate ($im, 255, 255, 128);
$color[] = imagecolorallocate ($im, 255, 128, 64);
imagettftext ($im, 14, 0, 25, 16, $color[mt_rand(0,5)], "arial.ttf", $cc);
imagepng ($im);
imagedestroy ($im);
}
?>
<form action="auswerten.php" method="post">
<p>Bitte geben Sie das Ergebnis ein.<br />
Sie können sich die Rechnung auch vorlesen lassen, falls Sie das Bild nicht entziffern können.</p>
<p><img src="<?php captcha(); ?>" /> <?php echo $audio_captcha; ?></p>
<p><input type="text" name="captcha" size="12" /></p>
<input type="hidden" name="result" value="<?php echo $result; ?>" />
<input type="submit" value="Senden" />
</form>
<?php
unset($result);
unset($cc);
unset($audio_captcha);
?>
Alles anzeigen
Wie bekomm ich den jetzt das Bild zum Laufen?
Test: http://kendo-bunker.de/donkey/captcha/
EDIT: naja, ander Zusammenstellung der mp3s muss ich noch arbeiten - klappt nicht immer...
EDIT2: Problem gelösst