Imageausgabe bei Zufallscode-Generierung klappt nicht
tinu
- php
Hai allerseits!
Ich hab versucht einen kleinen Generator zu basteln, welcher einen sechsstelligen Code ausspuckt und zwar in form eines Bildes (zu Beginn ein ganz simples einfarbiges Hintergrundbild mit dem entsprechenden Zufallscode darauf). Mein Code ist folgendermassen:
//Spamcode generieren
function getcode() {
$newcode = "";
$laenge=6;
$string="ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz123456789"; //0,O und o sind aufgrund ihrer Ähnlichkeit nicht eingeschlossen
mt_srand(microtime()*1000000);
for ($i=1; $i <= $laenge; $i++) {
$newpass .= substr($string, mt_rand(0,strlen($string)-1), 1);
}
return $newcode;
}
$code = getcode();
//Spamcodebild erstellen
$image = imagecreatetruecolor(100,40);
$textcolor = imagecolorallocate($image, 88, 148, 88);
$font = 2;
imagestring($image, $font, 5, 5, $code, $textcolor);
imagepng($image);
imagedestroy($image);
Die Generierung des Codes klappt einwandfrei, aber die des Bildes nicht. Anstelle des Bildes wird nur eine lange Kette von Sonderzeichen ausgegeben. Was mach ich denn falsch?!
Von wegen "php ist einfach zu lernen"... ich bekomm noch ne Krise (und das bei nem jämmerlichen Gästebuch-Projekt. *grmpf*
tinu
//Spamcode generieren
//Spamcodebild erstellenDie Generierung des Codes klappt einwandfrei, aber die des Bildes nicht. Anstelle des Bildes wird nur eine lange Kette von Sonderzeichen ausgegeben. Was mach ich denn falsch?!
Von wegen "php ist einfach zu lernen"... ich bekomm noch ne Krise (und das bei nem jämmerlichen Gästebuch-Projekt. *grmpf*
Was versprichst du dir von Captchas.
Was hast du unternommen, um dich vom Sinn von Captchas zu überzeugen?
mfg Beat
Was versprichst du dir von Captchas.
Was hast du unternommen, um dich vom Sinn von Captchas zu überzeugen?
Hi Beat
Auf meiner alten Homepage (gibts nicht mehr), war ein E-Mail-Kontaktformular. Als mit dem Lauf der Zeit immer mehr unsinnige Werbeeinträge und sonstiger Spam ins Formular eingetragen wurde (ich schätze mal von irgendwelchen Bots), hab ich mir ein Captcha (fertiger Code) reinkopiert und voilà schon waren die nervigen Einträge weg. Ich weiss, dass es mittlerweile auch Bots gibt, welche Captchas problemlos lesen können. Aber die meisten Bots beinhalten das nicht. Also hat man zwar nicht keinen vollständigen Schutz gegen Spameinträge, aber immerhin gegen die von 0815 Spambots, die kein Captcha auslesen. Kurz gesagt: Ich verspreche mir von Captcha weniger Spam als ohne Captcha.
Zweitens gehts hauptsächlich darum, dass ich versuch PHP zu lernen/anzuwenden. Dazu gehört meiner Meinung nach halt auch sowas. Nicht das Captcha an sich, sondern herauszutüfteln wie man sowas macht (ohne es einfach irgendwo zu kopieren). Aber nu kam ich halt nicht weiter und wäre deswegen froh um ein bisschen Hilfe gewesen.
Seeyou
tinu
Ich bin ein bisschen weitergekommen.
Ich wusste nicht, dass man das ganze PHP-File (in welchem der Code zur Generierung des Captcha-Bildes steht) im Formular als <img> einbinden muss.
Das hab ich nun mal so gemacht. Allerdings erhalte ich (das Skript aus dem ersten Posting bleibt unverändert) nun bloss ein schwarzes Bild ohne den Code (den String), welcher mit imagestring($image, $font, 5, 5, $code, $textcolor);
hätte erzeugt werden sollen.
Was mach ich falsch? Kann denn wirklich keiner helfen? :(
[latex]Mae govannen![/latex]
Kurz gesagt: Ich verspreche mir von Captcha weniger Spam als ohne Captcha.
http://www.einfach-fuer-alle.de/artikel/captcha/
Cü,
Kai
$image = imagecreatetruecolor(100,40);
Na toll! Normalerweise beantworte ich ja nicht gern meine eigenen Beiträge (weil ich so etliche Stunde verschwende um selbst auf den Fehler zu kommen, aber vielleicht hilft das hier ja mal irgendwem weiter.
Also... es hat nicht geklappt weil ich imagecreatetruecolor() verwendet hab. Mit imagecreate() klappts einwandfrei. Eigentlich sollte imagecreatetruecolor() gemäss php.net mit der GD Bibliothek ab Version 2.0.1 funktionieren. Auf meinem Server steht die GD Bibliothek in der Version 2.0.38 vor... wieso es trotzdem nicht klappt weiss ich nicht. Vielleicht hat ja wenigstens darauf noch jemand ne Antwort.
Liebe Grüsse
tinu