Captcha

Pilleslife
Hallo,

ich hab ein Problem mit einem selbst gecodeten Captcha Bild. Lokal mit XAMPP funktioniert es problemlos, ohne Fehler. Im Internet wird dann aber nur die URL des Scriptes angezeigt.

Hier ist der Code:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
header("Content-type: image/png");
   $img ImageCreateFromPNG($background);
   $color ImageColorAllocate($img$farbe['R'], $farbe['G'], $farbe['B']);


   $angle rand(0,5);
   $t_x rand(5,30);
   $t_y 35;
   imagettftext($img$ttfsize$angle$t_x$t_y$color$ttf$text);
   imagepng($img);
   imagedestroy($img);


Danke im Voraus für eure Hilfe.
Gruß
Pilleslife
[kamui]
Wo werden die Variablen definiert? Also $farbe, $ttfsize, $ttf und $text?
Pilleslife
Im oberen Bereich der Datei. Hier der komplette Code:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
<?php
/*
###############################################################
Konfigurationsbereich
*/


$zeichen array_merge(range('0''9'), range('A''Z'), array());    //Erlaubte Zeichen
$length "5"//Anzahl der Zeichen
$background "captcha.png"//Hindergrundgrafik (PNG)

//Schriftfarbe RGB
$farbe['R'] = 0;
$farbe['G'] = 0;
$farbe['B'] = 0;

$ttf "XFILES.TTF"//Schriftart
$ttfsize 25;


//###########Ende Config

session_start();
unset($_SESSION['captcha_spam']);

mt_srand((double)microtime()*1000000);

for ($i 1$i <= (count($zeichen)*2); $i++)
 {
 $swap mt_rand(0,count($zeichen)-1);
 $tmp $zeichen[$swap];
 $zeichen[$swap] = $zeichen[0];
 $zeichen[0] = $tmp;
 }
 
 // get password
  
$text substr(implode('',$zeichen),0,$length);


$_SESSION['captcha_spam'] = $text;
         
   header("Content-type: image/png");
   $img ImageCreateFromPNG($background);
   $color ImageColorAllocate($img$farbe['R'], $farbe['G'], $farbe['B']);


   $angle rand(0,5);
   $t_x rand(5,30);
   $t_y 35;
   imagettftext($img$ttfsize$angle$t_x$t_y$color$ttf$text);
   imagepng($img);
   imagedestroy($img); 
?>
[kamui]
Also wenn es bei dir lokal funktioniert, aber nicht auf dem Server liegt es nicht am Code, sondern an der Serverkonfiguration (sorry, hatte mich oben verlesen).

Vergleich mal die beiden (phpinfo()Augenzwinkern , vor allem die Werte mit "gd" (GD Library).
Pilleslife
Auf die Idee mit GD lib bin ich auch schon gekommen. Aber wenn ich es richtig lese ist es auf dem Server installiert, siehe hier.

Das komische ist, dass es auf einem anderen Webspace auch nicht läuft. Ich werde mal die zwei phpinfo Ausgaben vergleichen.
Agi
Wie bindest du das Captcha ein?
Pilleslife
Mit
php:
1:
<td><img src='includes/captcha/captcha.php' border='0' title='Sicherheitscode'></td><td><input type='text' name='sicherheitscode'></td></tr>


Aber das ist unwichtig, denn wenn ich die captcha.php aufrufe müsste ja das Bild angezeigt werden. Wird es aber nicht, also kann es nicht am einbinden ändern.
Agi
Also soweit ich mich erinnern kann, war bei Captachs hintendran immer ne Session oder Id oder so noch angegeben (captacha.php?sid=49wklsx03s02s0ls902) oder so in der Art.

Evtl. liegts daran?
[kamui]
Also bei mir funktioniert der Code nichtmal lokal, funktioniert der wirklich bei dir?

Hast du eigentlich die Schriftart mit hochgeladen?
ChrisGross
Zitat:
Original von Agi
Also soweit ich mich erinnern kann, war bei Captachs hintendran immer ne Session oder Id oder so noch angegeben (captacha.php?sid=49wklsx03s02s0ls902) oder so in der Art.

Evtl. liegts daran?


Nein das ist nicht nötig zur Anzeige. Was du meinst ist wenn man per javascript auf ein XML Document zugreift. Da lohnt es sich eine ich immer ändernde ID anzuhängen weil man dann das Problem mit dem Browsercache nicht hat smile
Pilleslife
Ja, er geht lokal bei mir und die Schriftart ist auch hochgeladen. Muss irgendeine Datei bestimmte Rechte haben?

@[kamui]: Wird bei dir ein Fehler angezeicht?
Dizzy.w3
Hi,

ne ganz simple Methode, um dem Fehler auf die Schliche zu kommen, wäre einfach mal die Headerangabe auszukommentieren.

Edit (weil du schon wieder offline bist, ich aber nicht solange warten möchte, um eine Lösung zu posten, schreibe ich mal meine Top-Kandidaten):

1. Die Font wird nicht gefunden
» statt XFILES.TTF nehmen wir als Pfad ./XFILES.TTF
» Hat sie das Recht gelesen zu werden?

2. Das Bild wird nicht gefunden
» Existiert's?
» Stimmt der Name?
» Hat es das Recht gelesen zu werden?

3. Eine Image-Funktion wird nicht gefunden (fehlendes php-gd)
Pilleslife
Srry, dass es so lange gedauert hat, aber Urlaub lag dazwischen.

Also auf dem Webserver bekomme ich eine leere, weiße Seite, lokal eine Reihe komischer Zeichen.
GneX
Hallo,

setz doch bitte

php:
1:
error_reporting(E_ALL);


in die Datei, Header raus und Poste mal die Ausgabe.
Pilleslife
Tut sich leider auch nichts.