Hallo Leute ich habe eine Klasse für Captcha geschrieben und diese in ein Formular eingebettet um dort zu erscheinen, aber diese Klasse gibt mir nur wirre Zeichen zurück.
Die Klasse sieht so aus:
Kann mir bitte jemand sagen was dort schief läuft? Hat dies was mit den Headern zu tun das der Brauser nicht anzeigt.
Vielen Dank und Gruß
Matze
Zusatz Info:
Mir ist klar, dass der Browser wissen muss was auf ihn zukommt. Durch das auskommentieren der Zeile:
hat er keinen Schimmer und er bringt diese Fehlermeldung da er mit gif so nichts anfangen kann. Das stimmt schon. Nur wo setzt er den Header?
Wenn ich die Zeile
einhänge meldet mir der Browser:
Kennt sich jemand damit aus und kann dieses Problem lösen:
Die obere Seite errecihe ich über den Link:
Die index.php unterscheidet die Seiten:
Code:
GIF87aF??€?????ÿÿÿ,????F???…„©Ëí£œ´Ú‹³Þ¼û†âH–晢*-ð±Jt ¯¶>áø®›ñ„9Öê“ÜnÆ—sÈ3.˜EJë b¥®(0è…lŸ2p²Ú¥ŽÃ5úy²Ýgq»<ê¹åé>W×vFö6ègÈæTWh¸ƒV$WÁHÆ·ôå‰Òéù *:Q??;
Die Klasse sieht so aus:
PHP:
...
<tr>
<td style="font-family: verdana,arial,helvetica; font-size : 75%; text-align: right;">Passwort wiederholen*</td>
<td><input type="password" name="password2" value="" style="font-family: verdana,arial,helvetica; font-size : 75%; color:#800000;" onFocus='this.style.backgroundColor="#FFC"' onBlur="set()"></td>
<td> </td>
</tr>
<?php
// define 'ImageGenerator' class
class ImageGenerator{
private $width=70;
private $height=23;
private $bgColor='0,0,0';
private $textColor='255,255,255';
private $inputString='Default Input String';
private $bgImage=NULL;
// initialize input arguments
public function __construct($inputString='Default Input String'){
if(strlen($inputString>255)){
throw new Exception('Invalid length for input string.');
}
$this->inputString=$inputString;
}
public function setImageWidth($width=400){
if(!is_int($width)&&$width>800){
throw new Exception('Invalid width for image stream.');
}
$this->width=$width;
}
public function setImageHeight($height=300){
if(!is_int($width)&&$height>600){
throw new Exception('Invalid height for image stream.');
}
}
public function setImageBgColor($bgColor='0,0,0'){
if(!preg_match("/^d{1,3},d{1,3},d{1,3}$/",$bgColor)){
throw new Exception('Invalid format for background color.');
}
$this->bgColor=$bgColor;
}
public function setImageTextColor($textColor='255,255,255'){
if(!preg_match("/^d{1,3},d{1,3},d{1,3}$/",$textColor)){
throw new Exception('Invalid format for text color.');
}
$this->textColor=$textColor;
}
public function setBgImage($bgImage='images/default.gif'){
if(!file_exists($bgImage)){
throw new Exception('Invalid background image.');
}
$this->bgImage=$bgImage;
}
public function setImageFont($font){
if(!file_exists($font)){
throw new Exception('Invalid image font.');
}
$this->font=$font;
}
// create image stream
public function displayImageStream(){
$this->img=$this->bgImage!=NULL?imagecreatefromgif($this->bgImage):imagecreate($this->width,$this->height);
$bgColor=explode(',',$this->bgColor);
$textColor=explode(',',$this->textColor);
// allocate background color on image stream
imagecolorallocate($this->img,$bgColor[0],$bgColor[1],$bgColor
[2]);
// allocate text color on image stream
$textColor=imagecolorallocate($this->img,$textColor[0],$textColor
[1],$textColor[2]);
// load font
if(!imagestring($this->img,5,$this->width/2-strlen($this->inputString)*5,$this->height/2-5,$this->inputString,$textColor)){
throw new Exception('Error creating image text');
}
// header("Content-type: image/gif");
// display image
imagegif($this->img);
// free up memory
imagedestroy($this->img);
}
}
class RandomGenerator{
private $length;
private $chars="ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
public function __construct($length=6){
if(!is_int($length)||$length<1){
throw new Exception('Invalid length for random string.');
}
$this->length=$length;
}
public function getRandomValue(){
$rndstr='';
$maxvalue=strlen($this->chars)-1;
for($i=0;$i<$this->length;$i++){
$rndstr.=substr($this->chars,rand(0,$maxvalue),1);
}
return $rndstr;
}
}
try{
// create new instance of 'RandomGenerator' class
$rnd=new RandomGenerator();
// create new instance of 'ImageGenerator' class
$imgGen=new ImageGenerator($rnd->getRandomValue());
echo '<tr><td>';
//display image stream on the browser
$imgGen->displayImageStream();
echo '</td>';
}
catch(Exception $e){
echo $e->getMessage();
exit();
}
?>
<td><input type="text" name="kombi" value="" style="font-family: verdana,arial,helvetica; font-size : 75%; color:#800000;" onFocus='this.style.backgroundColor="#FFC"' onBlur="set()"></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="send" value="Register" style="background-color:goldenrod;color:black; border: solid 1px silver;cursor:hand; width: 44px; font-family: verdana,arial,helvetica; font-size : 75%;" onMouseOver="this.style.backgroundColor='#efefef';" onMouseOut="this.style.backgroundColor='goldenrod';">
<input type="reset" value="Reset" onclick="window.location.reload()" style="background-color:goldenrod;color:black; border: solid 1px silver;cursor:hand; width: 35px; font-family: verdana,arial,helvetica; font-size : 75%;" onMouseOver="this.style.backgroundColor='#efefef';" onMouseOut="this.style.backgroundColor='goldenrod';"></td>
<td> </td>
</tr>
</table>
<form>
...
Kann mir bitte jemand sagen was dort schief läuft? Hat dies was mit den Headern zu tun das der Brauser nicht anzeigt.
Vielen Dank und Gruß
Matze
Zusatz Info:
Mir ist klar, dass der Browser wissen muss was auf ihn zukommt. Durch das auskommentieren der Zeile:
PHP:
// header("Content-type: image/gif");
Wenn ich die Zeile
PHP:
header("Content-type: image/gif");
Code:
Warning: Cannot modify header information - headers already sent by (output started at /opt/lampp/htdocs/WebSeite/testing/index.php:12) in /opt/lampp/htdocs/WebSeite/testing/register.php on line 165
GIF87aF??€?????ÿÿÿ,????F???z„©Ëí£œ´Ú‹³Þ¼û†âH–æÉj€¬l»®š¾ó«Ñ†®¼ëÉ~à ±(¤%q¾X–wLeUúÌR£°ÞR›=~3Þ)Ø -o‹dóFÞXc öLÆ×P¼evwƦváÔÅÔ¤´ˆ˜ðã‚"9IYiy™Q??;
Kennt sich jemand damit aus und kann dieses Problem lösen:
Die obere Seite errecihe ich über den Link:
Code:
index.php?action=Register
Die index.php unterscheidet die Seiten:
PHP:
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Titel</title>
<link rel="stylesheet" type="text/css" href="css/robo.css">
</head>
<body>
<!-- Inhalt der Datei -->
<?php
// echo $_SESSION['login'];
// Es wird überprüft ob POST oder GET Variablen gesetzt sind und wenn ja neu zugeordnet
if (isset($_POST['action']))
{ $action = $_POST['action'];
}
else
{ if (isset($_GET['action']))
{ $action = $_GET['action']; }
else
{ $action = "start" ; }
}
/* Gesamter Inhalt */
echo '<div style="width:1000px;height: 600px; margin:0px auto; text-align:left; border:dashed 1px #000000;">';
switch ($action){
case Memberbereich:
include('memberbereich.php');
break;
case Einstellungen:
include('einstellungen.php');
break;
case Anleitung:
include('anleitung.php');
break;
case Hilfe:
include('hilfe.php');
break;
case Register:
include('register.php');
break;
case Uebersicht:
include('uebersicht.php');
break;
case Logout:
include('logout.php');
break;
case Forget:
include('forget.php');
break;
default:
include('login.php');
}
echo '</div>';
echo '<div id="footer"><a href="#">Impressum</a></div>';
?>
</body>
</html>
Zuletzt bearbeitet: