Hallo.
Ohne etwas zu testen sehe ich, dass ein Semikolon Zeichen fehlt nach folgenden Zeilen:
header("Content-type: image/jpeg")
$zeichen = "abcdefghijklmnABCDEFGHIJKLMN1234567890"
$_SESSION["captcha_code"] = md5($KomplettGen)
Ich weiß nicht ob jemand daraus schlau wird. Ich gebe einfach meine Sicherheitscode PHP:
<?php
error_reporting(-1); /* deaktiviert eventuelle PHP Fehlermeldungen */
ini_set('default_charset', 'UTF-8');
mb_internal_encoding('UTF-8');
require_once('./../Bausteine/funktion_GetWert.php');
require_once('./../Bausteine/funktion_ZuInteger.php');
require_once('./../Bausteine/funktion_SitzungWert.php');
require_once('./../Bausteine/funktion_Textbaustein.php');
header('HTTP/1.1 200 OK');
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Expires: Sat, 1 Jan 2000 00:00:00 GMT'); /* Datum in der Vergangenheit */
header('Content-Type: image/png');
header('Content-Transfer-Encoding: binary');
header('Last-Modified: ' . date('D, d M Y H:i:s') . ' GMT');
// Einstellungen -------- //
$Bildbreite=300;
$Bildhöhe=50;
$AnzahlZeichen=10;
$Schriften=array(dirname(__FILE__).'/schriftarten/bahnschrift.ttf' /*, dirname(__FILE__).'/schriftarten/<<schriftname>>.ttf' */);
$InfoSchrift=dirname(__FILE__).'/schriftarten/arial.ttf';
// ---------------------- //
$Bild=imagecreatetruecolor($Bildbreite, $Bildhöhe);
imageantialias($Bild, true);
imagesavealpha($Bild, true);
$SID=GetWert('SID');
if ($SID==='')
{
imagefill($Bild, 0, 0, imagecolorallocatealpha($Bild, 0, 0, 0, 95)); /* Schwarz 3/4 tarnsparent */
$Sprache=ZuInteger(GetWert('S'));
if ($Sprache===false)
{ $Text='Parameter S fehlt oder ist ungültig!'; }
else
{
require_once('./../Bausteine/sprachen.php');
$DateiSprache='./../Text/Text_' . $L_Sprachen[$Sprache][1] . '.php';
if (file_exists($DateiSprache) && is_file($DateiSprache) && is_readable($DateiSprache))
{
$Seite='Sicherheitskode';
require_once($DateiSprache);
$Text=Textbaustein('$T_Sicherheitskode');
}
else
{ $Text='Entsprechende Sprachdatei fehlt!'; }
}
imagettftext($Bild, 12, 0, 20, 30, imagecolorallocate($Bild, 255, 0, 0), $InfoSchrift, UTF8ZuKodierterString($Text));
}
else
{
$Sicherheitskode=substr(str_shuffle(str_repeat('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', $AnzahlZeichen)), 0, $AnzahlZeichen);
session_id($SID);
if (session_start())
{
// if (SitzungWert('Angemeldet')==='JA') /* aus Sicherheitsgründen keine Info über Erfolg oder Misserfolg */
// { $_SESSION['Sicherheitskode']=$Sicherheitskode; }
try { $_SESSION['Sicherheitskode']=$Sicherheitskode; }
catch (exception $e) { }
finally { }
}
$Rechtecke=10; /* Hintergrund generieren */
$Farben=array();
$Rot=rand(100, 255);
$Grün=rand(100, 255);
$Blau=rand(100, 255);
for($i=0; $i<$Rechtecke; $i++) /* Ähnliche Farben generieren */
{ $Farben[]=imagecolorallocatealpha($Bild, $Rot-(10*$i), $Grün-(10*$i), $Blau-(10*$i), 63); }
imagefill($Bild, 0, 0, $Farben[array_rand($Farben)]); /* Hintergrundfarbe */
for($i=0; $i<$Rechtecke; $i++) /* Rechtecke */
{
imagesetthickness($Bild, rand(1, 10));
imagerectangle($Bild, rand(-10, $Bildbreite-10), rand(-10, 10), rand(-10, $Bildbreite-10), rand($Bildhöhe-10, $Bildhöhe+10), $Farben[$i]);
}
$Zeichenplatz=($Bildbreite-30)/$AnzahlZeichen;
$LinksAbstand=15; /* Buchstaben über diese Variable zentrieren um Grafik schöner zu machen */
for($i=0; $i<$AnzahlZeichen; $i++)
{
imagettftext($Bild, 20, rand(-30, 30), $LinksAbstand+rand(-5, 5)+($i*$Zeichenplatz), rand(25, $Bildhöhe-10), imagecolorallocatealpha($Bild, rand(0, 255), rand(0, 255), rand(0, 255), 47), $Schriften[array_rand($Schriften)], $Sicherheitskode[$i]);
}
}
imagepng($Bild);
imagedestroy($Bild);
function UTF8ZuKodierterString(string $UTF8Text)
{
if (!is_string($UTF8Text))
{ return ''; }
else
{
$ISO88591=html_entity_decode(mb_convert_encoding($UTF8Text, 'HTML-ENTITIES','UTF-8'), ENT_NOQUOTES, 'ISO-8859-1');
$Sting='';
for($i=0; $i<strlen($ISO88591); $i++)
{
$Zeichen=$ISO88591[$i]; /* bzw. Byte des Zeichens */
$ACSIIKode=ord($Zeichen);
if ($ACSIIKode>127)
{ $Sting.='&#' . $ACSIIKode . ';'; }
else
{ $Sting.= $Zeichen; }
}
return $Sting;
}
}
?>
Auch bei mir fehlt teilweise die Fehlerbehandlung.
Das ganze kann man sich unter th11.bplaced.net in Aktion anschauen.
Bitte meinen Wachhund nur mit frischem Fisch füttern. Danke!
Gruß TH