Hallo, ich habe einen Sicherheitsode eingebaut.
Nun gibt es das Problem, dass es scheinbar doch Robots gibt, die den Code doch auslesen können.
Alle 10 Sec gibts eine Abfrage, und über Stunden wird das wohl keiner per Hand machen.
Hat mein Code Fehler oder was kann ich tun?
Danke
PHP-Code:
<?php
session_start();
$_SESSION['scode'] = rand_string(6);
//$_SESSION['scode'] = rand(1111,999);
function rand_string($lng)
{
mt_srand(crc32(microtime()));
$buchstaben = "abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str_lng = strlen($buchstaben)-1;
$rand= "";
for($i=0;$i<$lng;$i++)
$rand.= $buchstaben{mt_rand(0, $str_lng)};
return $rand;
}
?>
<form action="code.php" method="post">
<img src="scode.php?<?php echo time(); ?>&<?php echo strip_tags(SID); ?>" alt="Sicherheitscode">
<input type="text" name="scode" maxlength="6">
<input type="submit" value="Login" class="form_allg">
</form>
<?php
/// Bild datei
session_start();
mt_srand(crc32(microtime()));
//Abfrage des Sicherheitscodes
$string = $_SESSION['scode'];
if(empty($string))
die("Es wurde kein Sicherheitscode übertragen");
if(!extension_loaded("gd"))
die("Keine Grafik-Unterstützung vorhanden");
$image = imagecreate(100,35) OR die("Fehler beim Erstellen des Bildes");
$farbe_body=imagecolorallocate($image,0x00,0x00,0x5F);
$farbe_text = imagecolorallocate($image,0xFF,0xFF,0xFF);
//Sicherheitscode einzeichnen
$font = 5;
$x = mt_rand(2,35);
for($i=0;$i<strlen($string);$i++)
{
if(($y1 = $y_old-7)<2) $y1 = 2;
if(($y2 = $y_old+7)>15) $y2 = 15;
$y = mt_rand($y1,$y2);
imagestring ($image,$font,$x,$y, $string{$i}, $farbe_text);
$x+=11;
$y_old = $y;
}
if(function_exists("imagegif"))
{
Header("Content-type: image/gif");
ImageGif($image);
}
elseif (function_exists("imagepng"))
{
Header("Content-type: image/png");
ImagePng($image);
}
elseif (function_exists("imagejpeg"))
{
Header("Content-type: image/jpeg");
ImageJpeg($image, "", 0.5);
}
else
die("Keine Grafik-Unterstützung vorhanden");
?>
Nun gibt es das Problem, dass es scheinbar doch Robots gibt, die den Code doch auslesen können.
Alle 10 Sec gibts eine Abfrage, und über Stunden wird das wohl keiner per Hand machen.
Hat mein Code Fehler oder was kann ich tun?
Danke
EDIT:
php-tags sponsored by TBT
EDIT:
php-tags korrekt sponsored by kropff
Kommentar