PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Captcha-Code wird im Gästebuch nicht angezeigt.


chip1602
14.12.2009, 16:56:20
Hallo Users.

Ich habe für meine Homepage ein Fix-Fertig-Gästebuch runtergeladen.
Früher ging's noch, aber als ich heute getestet habe, is kein Captcha-Code gekommen.
Ich poste hier mal den wichtigsten Teil von guestbook.php und die ganze captchaimg.php

captchaimg.php

<?php
// ******************************
// *** Neuer Gästebucheintrag ***
// ******************************
if ( ($action=="new") or trim($err_text != "") ) {
?>

<center>
<h1><?php echo $guestbook_title; ?></h1>

<h2>Neuen Eintrag hinzufügen</h2>
</center>

<table border="0" cellspacing="0" cellpadding="1"><tr><form action="<?php echo $_SERVER['PHP_SELF']; ?>?g_action=post" method="post" name="guestbook"><td id="guestbooktable">
<table border="0" cellspacing="0" cellpadding="5"><tr><td id="guestbookinfo">

<?php
if(($send=="1") && trim($err_text!="")) {
echo "<p><big><b>Fehler:</b></big><br>";
echo "<span id=red>$err_text</span></p>";
}
if(trim($gb_home=="") && (!$gb_home)) $gb_home="http://";
?>

<table border=0 cellspacing=2 cellpadding=0 width=100%><tr>
<td valign=top>
<table border=0 cellspacing=2 cellpadding=0 width=100%>
<tr><td nowrap align=right id="guestbookinfo">Dein Name:</td><td nowrap align=right id="guestbookinfo">&nbsp;</td>
<td width=100%><input type="text" name="p_gb_name" size=50 maxlength=25 value="<?=$gb_name?>"></td></tr>
<tr><td nowrap align=right id="guestbookinfo">Deine E-Mail-Adresse: <span id=red><b>*</b></span></td><td></td>
<td width=100%><input type="text" name="p_gb_mail" size=50 maxlength=50 value="<?=$gb_mail?>"></td></tr>
<tr><td nowrap align=right id="guestbookinfo">Deine Homepage: <span id=red><b>*</b></span></td><td>&nbsp;</td>
<td width=100%><input type="text" name="p_gb_home" size=50 maxlength=65 value="<?=$gb_home?>"></td></tr>
<tr><td nowrap align=right valign=top id="guestbookinfo">Text:<br><i>(max. 1.000 Zeichen,<br>keine HTML-Tags)</i></td><td></td>
<td width=100%><textarea cols="50" rows="8" name="p_gb_text"><?=$gb_text?></textarea></td></tr>

<tr><td nowrap align=right id="guestbookinfo">Sicherheitscode:</td><td>&nbsp;</td>
<td width=100%><?php echo CaptchaImageString($CodeMD5); ?></td></tr>
<tr><td nowrap align=right id="guestbookinfo">Sicherheitsabfrage:</td><td>&nbsp;</td>
<td width=100%><input type=text size=10 maxlen=6 name=p_code value=""></td></tr>
<tr><td nowrap align=right id="guestbookinfo">&nbsp;</td><td>&nbsp;</td>
<td width=100% id="guestbookinfo">Bitte geben Sie den 6-stelligen Sicherheitscode ein.</td></tr>

<tr><td id="guestbookinfo"><span id=red><b>*</b></span><i> = optionale Felder</i></td><td></td><td>
<input type="hidden" name="p_sid" value="<?=$CodeMD5?>">
<input type="hidden" value="1" name="p_send">
<input type="submit" value="Senden" name="submit">
<input type="reset" value="Zurücksetzen" name="reset">
</td></tr>
</table>
</td><td>&nbsp;&nbsp;</td><td width=100% valign=top id="guestbookinfo">
<?php
if($smilies_path) {
?>
<b>SMILIES:</b><br>
<img src="<?=$images_path?>space1.gif" width="1" height="5" alt="" border="0"><br>
<a href="javascript:add_smilie('smile');"><img src="<?=$smilies_path?>smile.gif" border=0 alt=":-)"></a>&nbsp;
<a href="javascript:add_smilie('wink');"><img src="<?=$smilies_path?>wink.gif" border=0 alt=";-)"></a>&nbsp;
<a href="javascript:add_smilie('happy');"><img src="<?=$smilies_path?>happy.gif" border=0 alt=":-))"></a>&nbsp;
<a href="javascript:add_smilie('sad');"><img src="<?=$smilies_path?>sad.gif" border=0 alt=":-("></a>&nbsp;
<a href="javascript:add_smilie('puh');"><img src="<?=$smilies_path?>puh.gif" border=0 alt=":-P"></a>&nbsp;
<a href="javascript:add_smilie('yummie');"><img src="<?=$smilies_path?>yummie.gif" border=0 alt=":_yummie_:"></a>&nbsp;
<a href="javascript:add_smilie('coool');"><img src="<?=$smilies_path?>coool.gif" border=0 alt=":_coool_:"></a><br>
<a href="javascript:add_smilie('pukey');"><img src="<?=$smilies_path?>pukey.gif" border=0 alt=":_pukey_:"></a>&nbsp;
<a href="javascript:add_smilie('devil');"><img src="<?=$smilies_path?>devil.gif" border=0 alt=">:->"></a>&nbsp;
<a href="javascript:add_smilie('frown');"><img src="<?=$smilies_path?>frown.gif" border=0 alt=":_frown_:"></a>&nbsp;
<a href="javascript:add_smilie('redface');"><img src="<?=$smilies_path?>redface.gif" border=0 alt=":_redface_:"></a>&nbsp;
<a href="javascript:add_smilie('clown');"><img src="<?=$smilies_path?>clown.gif" border=0 alt=":_clown_:"></a>&nbsp;
<a href="javascript:add_smilie('cry');"><img src="<?=$smilies_path?>cry.gif" border=0 alt=":_cry_:"></a>&nbsp;
<a href="javascript:add_smilie('icq');"><img src="<?=$smilies_path?>icq.gif" border=0 alt=":_icq_:"></a>&nbsp;
<a href="javascript:add_smilie('favicon');"><img src="<?=$smilies_path?>favicon.gif" border=0 alt=":_favicon_:"></a>&nbsp;
<a href="javascript:add_smilie('idea');"><img src="<?=$smilies_path?>idea.gif" border=0 alt=":_idea_:"></a><br>
<a href="javascript:add_smilie('cwink');"><img src="<?=$smilies_path?>cwink.gif" border=0 alt=":_cwink_:"></a>&nbsp;
<a href="javascript:add_smilie('grrr');"><img src="<?=$smilies_path?>grrr.gif" border=0 alt=":_grrr_:"></a>&nbsp;
<a href="javascript:add_smilie('ill');"><img src="<?=$smilies_path?>ill.gif" border=0 alt=":_ill_:"></a>&nbsp;
<a href="javascript:add_smilie('tooth');"><img src="<?=$smilies_path?>tooth.gif" border=0 alt=":_tooth_:"></a>&nbsp;
<a href="javascript:add_smilie('psycho');"><img src="<?=$smilies_path?>psycho.gif" border=0 alt=":_psycho_:"></a>&nbsp;
<a href="javascript:add_smilie('monster');"><img src="<?=$smilies_path?>monster.gif" border=0 alt=":_monster_:"></a>&nbsp;
<a href="javascript:add_smilie('halt');"><img src="<?=$smilies_path?>halt.gif" border=0 alt=":_halt_:"></a><br>
<a href="javascript:add_smilie('glass');"><img src="<?=$smilies_path?>glass.gif" border=0 alt=":_glass_:"></a>&nbsp;
<a href="javascript:add_smilie('seek');"><img src="<?=$smilies_path?>seek.gif" border=0 alt=":_seek_:"></a>&nbsp;
<a href="javascript:add_smilie('super');"><img src="<?=$smilies_path?>super.gif" border=0 alt=":_super_:"></a>&nbsp;
<a href="javascript:add_smilie('help');"><img src="<?=$smilies_path?>help.gif" border=0 alt=":_help_:"></a>&nbsp;
<a href="javascript:add_smilie('boxer');"><img src="<?=$smilies_path?>boxer.gif" border=0 alt=":_boxer_:"></a><br>
<a href="javascript:add_smilie('dance');"><img src="<?=$smilies_path?>dance.gif" border=0 alt=":_dance_:"></a>&nbsp;
<a href="javascript:add_smilie('alcohol');"><img src="<?=$smilies_path?>alcohol.gif" border=0 alt=":_alcohol_:"></a><br>
<a href="javascript:add_smilie('space1');"><img src="<?=$images_path?>space1.gif" width="1" height="10" alt="" border="0"><br>
<?php
}
?>
<b>TAGS:</b><br>
<img src="<?=$images_path?>space1.gif" width="1" height="5" alt="" border="0"><br>

<table border=0 cellspacing=0 cellpadding=0
<tr><td id="guestbookinfo" align="center"><b id="red">:b:</b></td><td id="guestbookinfo" align="center">&nbsp;bzw.&nbsp;</td><td id="guestbookinfo" align="center"><b id="red">:/b:</b></td><td id="guestbookinfo">&nbsp;für <b>fett</b></tr>
<tr><td id="guestbookinfo" align="center"><b id="red">:i:</b></td><td id="guestbookinfo" align="center">&nbsp;bzw.&nbsp;</td><td id="guestbookinfo" align="center"><b id="red">:/i:</b></td><td id="guestbookinfo">&nbsp;für <i>kursiv</i></tr>
<tr><td id="guestbookinfo" align="center"><b id="red">:u:</b></td><td id="guestbookinfo" align="center">&nbsp;bzw.&nbsp;</td><td id="guestbookinfo" align="center"><b id="red">:/u:</b></td><td id="guestbookinfo">&nbsp;für <u>unterstrichen</u></tr>
</table>

</td>
</tr></table>

</td></tr></table>
</td></form></tr></table>

<center>
<br>
<big><b><a href="<?php echo $_SERVER['PHP_SELF']; ?>">Zurück zum Gästebuch</a></b></big><br>
<br>
<table border=0 cellspacing=0 cellpadding=0 width=570><tr><td id=guestbooktable><img src="space1.gif" border=0 height=1 width=1 alt=""></tr></td></table><br>
<b></b>
</center>

</td></tr></table>
</body>
</html>

<?php
exit;
}



captchaimg.php

<head>
</head>

<?php
// Header für PNG-Bild senden
header("Content-type: image/png");
// Captcha-Einstellungen
$ValidChars = "ABCEDFGHJKLMNPQRSTUVWXYZ123456789abcdefhknrstuvxz";
$CodeLength = 6;
// Code aus Seed zusammenstellen
$seed = GetParam("s", "G", 0);
if (($seed < 5000) || ($seed > 1000000)) $seed = 0;
mt_srand($seed);
$code = "";
for($i = 0; $i < $CodeLength; $i++) {
$code .= substr($ValidChars, mt_rand(0, strlen($ValidChars) - 1), 1);
}
// Bild-Einstellungen
$fontsize = 5;
$charwidth = imagefontwidth($fontsize);
$imgwidth = ($charwidth * strlen($code)) + 7;
$imgheight = imagefontheight($fontsize) + 3;
$image = imagecreate($imgwidth, $imgheight);
$imgcolorback = imagecolorallocate($image, 230, 230, 230);
$imgcolortext = imagecolorallocate($image, 100, 100, 100);
$imgcolorline = imagecolorallocate($image, 170, 170, 170);
// Text ausgeben
$fs = $fontsize;
for ($i = 0; $i < strlen($code); $i++) {
$top = 0;
$left = 0;
$mod = fmod(mt_rand(1,4), 4);
if ($mod == 1) {
$fs = $fontsize - 1;
} else if ($mod == 2) {
$fs = $fontsize - 2;
$left = 1;
$top = mt_rand(0, 2);
} else if ($mod == 3) {
$fs = $fontsize - 3;
$left = 1;
$top = mt_rand(0, 2);
}
imagestring($image, $fs, 4 + ($charwidth * $i) + $left, 1 + $top, substr($code, $i, 1), $imgcolortext);
}
// Rahmen
imagerectangle($image, 0, 0, $imgwidth - 1, $imgheight - 1, $imgcolorline);
// Bild erstellen
imagepng($image);
imagedestroy($image);

function GetParam($ParamName, $Method = "P", $DefaultValue = "") {
if ($Method == "P") {
if (isset($_POST[$ParamName])) return $_POST[$ParamName]; else return $DefaultValue;
} else if ($Method == "G") {
if (isset($_GET[$ParamName])) return $_GET[$ParamName]; else return $DefaultValue;
} else if ($Method == "S") {
if (isset($_SERVER[$ParamName])) return $_SERVER[$ParamName]; else return $DefaultValue;
}
}
?>

Ich bitte um Hilfe
Schon einmal danke im voraus
chip1602

urvater
14.12.2009, 18:21:22
Ich vermute einmal, daß es bei dir ein Update in PHP gegeben hat. Nun werden register_globals auf off stehen. Allerdings ist dies nur eine Vermutung, da die Funktion CaptchaImageString nicht zu erkennen ist.

PS: ersetze bitte alle $_SERVER['PHP_SELF'] in allen Dateien gegen $_SERVER['SCRIPT_NAME']

chip1602
14.12.2009, 18:41:51
Ich vermute einmal, daß es bei dir ein Update in PHP gegeben hat. Nun werden register_globals auf off stehen. Allerdings ist dies nur eine Vermutung,

register_globals Off Off
Was soll ich machen? Ich habe kein zugriff auf die php-config-File...


PS: ersetze bitte alle $_SERVER['PHP_SELF'] in allen Dateien gegen $_SERVER['SCRIPT_NAME']

Hab ich gemacht

Danke, schon mal.

urvater
16.12.2009, 13:54:12
Wenn es denn tatsächlich an register_globals = off liegt, dann solltest du dir ein aktuelles Skript(GB) besorgen.
Niemand würde dir hier empfehlen diese wieder auf on zu stellen.

Wenn genug Erfahrung vorhanden ist könntest du das gesamte Skript auch überarbeiten.

Ansonsten kannst ja mal den Code posten wo die Funktion "CaptchaImageString" beschrieben wird, da diese ja anscheinend das Capcha erzeugt.

chip1602
16.12.2009, 18:00:50
Ansonsten kannst ja mal den Code posten wo die Funktion "CaptchaImageString" beschrieben wird, da diese ja anscheinend das Capcha erzeugt.

Ich hoffe, dass ist der richtige Teil...

// ###################################################################### ######

function CaptchaImageString(&$CodeMD5) {
// Captcha-Einstellungen
$ValidChars = "ABCEDFGHJKLMNPQRSTUVWXYZ123456789abcdefhknrstuvxz";
$CodeLength = 6;
// Code zusammenstellen
mt_srand((double)microtime() * 1000000);
$seed = mt_rand(5000, 1000000);
mt_srand($seed);
$code = "";
for($i = 0; $i < $CodeLength; $i++) {
$code .= substr($ValidChars, mt_rand(0, strlen($ValidChars) - 1), 1);
}
$CodeMD5 = md5(strtoupper($code));
return '<img src="captchaimg.php?s='.$seed.'">';
}

// ###################################################################### ######

urvater
17.12.2009, 18:17:21
Ok an dieser Funktion scheint es nicht zu liegen. Was ich eben aber gefunden habe war ImageCreate() gibt den Zeiger auf ein neues Bild zurück. Dieser Zeiger stellt ein leeres Bild mit der Größe x_size und y_size dar.

Es wird empfohlen, die Funktion imagecreatetruecolor() zu verwenden.
Versuch es also mal in deiner captchaimg.php mit folgender Änderung

// Bild-Einstellungen
$fontsize = 5;
$charwidth = imagefontwidth($fontsize);
$imgwidth = ($charwidth * strlen($code)) + 7;
$imgheight = imagefontheight($fontsize) + 3;
$image = imagecreatetruecolor($imgwidth, $imgheight); //nur diese Zeile beachten

Hier habe ich jetzt imagecreate() durch imagecreatetruecolor() ersetzt. Ansonsten kann ich keinen Grund finden wieso dein Bild plötzlich nicht mehr angezeigt werden sollte. Versuch mal mit den Ersteller des GB in Kontakt zu treten, wenn dies nun auch nicht hilft.