Captchagrafik funktioniert nicht

Hi BP-Community!!!

Also, ich habe ein Captchascript geschrieben und local getestet.
Es funktioniert einwandfrei. Aber wenn ich es hier aktiviere,
dann wird die Grafik leider nicht angezeigt…

Ich wollte jetzt mal wissen, ob vllt Captcha auf bplaced nicht verwendet werdne kann…

Servus,

Dein Code kann falsch sein, weil hier, wenn du in php_info(); schaust, eine ziemlich neue Version von GD-Library installiert ist.

Hast du eine .ttf-Datei hochgeladen oder machst du das mit php?

Poste den Code mal oder lad ihn als chapta.phps hoch.

hey,

guck mal nach ob deien cookies aktiv sind
versuchs ansonstens mit session

bye

session funktioniert auch mit cookies, das ändert also gar nichts.

Sessions müssen nicht nur mit Cookies sein. Die ID kann auch mit der URL angehängt werden. mehr…

sebbo

SO natürlich auch :wink:
Wie sieht denn jetzt das captchascript aus?

Sorrym, das ich mich nicht mehr gemeldet habe!
Mein Script muesste aber funktionieren…
Ja ich mache das mit *.ttf :wink:

So hier mal mein Script:

[code]<?php
if(isset($_GET[“code”]))
{
unset($_SESSION[“secure”]);
$zahl = “6”;
$str = “”;
$buchstaben = ‘abcdefghijklmnopqrstuvwxyz123456789’;

$buchstabenzahl = strlen($buchstaben)-“1”;

for($i = "1"; $zahl >= $i; $i++)
{
srand(microtime()*1000000);
$zufall = rand(0,$buchstabenzahl);
$str .= $buchstaben{$zufall};
}

$_SESSION[“secure”] = $str;

$font = “font.ttf”;
$pic = ImageCreateFromGIF(“captcha.gif”);
$im = ImageCreate (150, 30);
$angel = “0”;
$color = ImageColorAllocate ($pic, 255,255,255);
ImageTTFText($pic, 22, $angel, 18, 30, $color, $font, $str);
#imageline($pic,20,25, 90,32,$color);

header(“Content-type: image/gif”);
ImageGIF($pic);
ImageDestroy($pic);
}
?>[/code]

und wie gesagt, lokal funktioniert das ganze :wink:

Ist das das ganze Script?

Meiner Meinung nach dürfte das dann nicht einmal auf deinem lokalen Server funktionieren, da du die Session nirgendwo startest!
Am Anfang des Scripts sollte also ein

stehen.

das geht auf manchen servern. kann sein, dass es hier nicht geht und dein script deswegen nicht funktioniert. versuch also mal, wie Steditor schon sagte, an den anfang ein session_start(); zusetzen.


das geht so nicht...das müsste $buchstaben[$zufall] heißen...so wie du es hast sucht er nach der Variable $buchstabenX, wober X=$zufall

das geht so nicht…das müsste $buchstaben[$zufall] heißen…so wie du es hast sucht er nach der Variable $buchstabenX, wober X=$zufall

Nein, die Syntax stimmt so schon, nur wird sie missbilligt.

Hilfe ist PHP eine behinderte Sprache…

wenn ${“var1”} was anders bewirkt wie $var{1} …

Danke für die shcnellen Antworten =)

Also mit der session_start();

Das steht im Gästebuchscript drinne :wink:
Das was ich gepostet habe, ist nur die “Protection”,
also eine Datei, die ich in Scripts einbinde wo ich die
Grafikabfrage halt haben möchte…

Gästebuch (Ausschnitt)

[code] session_start();
if( !@include( “inc/protect.php” )) die( “Protect file missing…” );

//Seite ausgeben
echo "
<p align=“center”><font size=“6”>

<tbody>

    <tr>

        <td style='vertical-align: middle; text-align:[/code]

Und so wirds aufgerufen

<tr> <td width=\"100\">&nbsp;</td> <td><img src='protect.php?code' border=\"0\" alt=\"Sicherheitscode\"></td> </tr>

Du musst im anderen Script trotzdem die Session starten. Dein Captchascript wird ja nicht eingebunden, sondern als Bild verlinkt, der phpCode hat nichts miteinander zu tun.

Also ich glaube du guckst dir meine Posts nicht genau an^^

Sicherlich wird die protect.php included, sonst könnte ich ja schlecht einen code darstellen(lokal)

Hie rnochmal der Auschnistt:

session_start(); if( !@include( "inc/protect.php" )) die( "Protect file missing..." );

Sonst keiner 'ne Idee?

1.: Warum bindest du die protect.php in dein Script mit include ein? Das ist doch ein Bild!

2.: Da du die captchagrafik als Bild einbindest ist die protect.php dort ein EIGENSTÄNDIGES Script. Es braucht also auch den Befehl session_start().

Ich habe auch gesagt, dass ich das Script gerne für mehrere Scripts anwenden möchte und deshalb binde ich das Script einfach ein. Das Bild wird natürlich mit eingebunden :wink:

Und außerdem ist schon eine session_start(); im Script :stuck_out_tongue:

  1. Und noch mal: Beim Aufruf des Scripts als Bild greifst du genauso auf die Session zu, und vorher musst du sie starten.
  2. Wenn du prüfen willst, ob die Datei vorhanden ist, verwende lieber is_file() und nicht einen includebefehl.
  1. Also meinst du, dass ich in der protect.php am anfang nocheinmal eine session_start(); machen sollte? Hab ich schon probiert, ganz am anfang als du das schonmal egsagt hast.

  2. is_file() kannte ich nicht, ich habs mir grad mal angeguckt und das sieht wirkl sicherer aus :wink:
    werde mich mal damit befassen, und dann vllt alle includes ändern. Danke für den tipp =)

So habs jetzt…

Also mein Fehler war ganz shcön dumm…
Ich habe die protect.php falsch verlinkt :whata:

und @Steditor: in die protect.php muss kein session_start();, weil es ja schon in der gbook.php steht :stuck_out_tongue:

Danke an alle, für die Hilfe!!!