php.de

Zurück   php.de > Webentwicklung > HTML, Usability und Barrierefreiheit

HTML, Usability und Barrierefreiheit Themen rund um Textauszeichnung, Formatierung, Barrierefreiheit und Usability.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.07.2008, 13:32  
Benutzer
 
Registriert seit: 23.08.2006
Beiträge: 86
Canni
Standard Problem mit Ausgabe eines gifs für ein Captcha

Hallo.

Ich schreibe mir gerade eine Captcha-Klasse die bis dato so aussieht:

PHP-Code:
class Captcha{
    
  public 
$width                     "";   // Breite des Captchas
  
public $height                    "";  // Höhe des Captchas
  
public $bild                     "";    // Die mit PHP erzeugte Grafik
  
public $bgcolor                ""// Hintergrundfarbe

    
public $errors = array(); // Fehlerarray

    
    
    // Konstruktor, erstellt die "Grundgrafik"
  
function __construct($width$height){

      if(!
is_Int($width) OR !is_Int($height)){
      die(
"Breite und/oder Höhe des Captchas nicht angegeben!");
      }  
        else{  
                
$this->width $widthvar_dump($this->width);
          
$this->height $height;var_dump($this->height);
          
$this->bild imagecreatetruecolor($width,$height);
          
/* Rückgabe von imagecreatetruecolor ist nur ein identifier auf das Bild im Speicher */
        
}
       
       
    }

    
    
    
// Kontrollfunktion zur Prüfung von Farbwerten
  
function checkColorValue($r,$g,$b){

      if(!
is_Int($r) OR $r<OR $r >255){return false;}
    if(!
is_Int($g) OR $g<OR $g >255){return false;}
    if(!
is_Int($b) OR $b<OR $b >255){return false;}

    return 
true;
    
  }

    
    
  
// setzt die Hintergrundfarbe der Grafik
  
function setBGColor ($r$g$b){

      if(!
$this->checkColorValue($r,$g,$b)){
        
$this->errors[] = "Falscher Farbwert (Hintergrundfarbe)!";
      return 
false;
    }
    
    
$this->bgcolor imagecolorallocate($this->bild,(int)$r,(int)$g,(int)$b);
    
/* imagecolorallocate gibt eine Farb-ID, die durch die angegebenen RGB-Werte bestimmt wird, zurück */
    
     
}
    
     
     
     
// Gibt die Grafik auf dem Bildschirm aus
    
function createCaptcha (){
         
// Prüfung des Fehlerarrays
         
if(count($this->errors)){
             foreach(
$this->errors as $error){
             echo 
$error."
\n"
;
           return 
false;
        }
    }

                  
    
// Mime-Type im Header definieren
    #header("Content-Type: image/gif");
    // Grafik ausgeben
    
imagegif($this->bild);
       
#imagegif($this->bild);
    // Grafik aus dem Speicher löschen
    #imagedestroy($this->bild);

    


Die Aufrufe:

PHP-Code:
$objCaptcha = new Captcha($cfg['captcha']['imagewidth'],$cfg['captcha']['imageheight']);    
            
$objCaptcha->setBGColor($cfg['captcha']['red'],$cfg['captcha']['green'],$cfg['captcha']['blue']);
$objCaptcha->createCaptcha(); 

Die Ausgabe von var_dump($objCaptcha) sieht dann so aus:
Code:
object(Captcha)#7 (5) { ["width"]=> int(200) ["height"]=> int(50) ["bild"]=> resource(20) of type (gd) ["bgcolor"]=> int(16737380) ["errors"]=> array(0)
also ok soweit

Nur das Bild ( bzw. die Ausgabe des Bildes ) sieht nicht wie ein Bild aus:

Code:
int(200) int(50) GIF87aÈ2€,È2s„©Ë*£œ´Ú‹³Þ¼û*âH–扦êʶî ÇòL×öçúÎ÷þ ‡Ä¢ñˆL*—̦ó J§Ôªõ*Íj·Ü®÷ ‹Çä²ùŒN«×ì¶û ËçôºýŽÏë÷ü¾ÿ(8HXhxˆ˜¨¸ÈØèøiX;
Ich denke das hat was mit dem header zu tun.
Wenn ich #header("Content-Type: image/gif"); nicht auskommentiere bekomme ich natürlich die Meldung, daß der header bereits gesendet wurde. Kann mir jemand weiterhelfen?

Thx schon mal
Canni ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.07.2008, 16:09  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Dann schau dir die Fehlermeldung die dann kommt genau an, WO in deinem Code schon was ausgegeben wurde und verhindere das.

z.b. leerstellen vor <?php und nach ?> in der datei selbst oder in includes etc.
robo47 ist offline   Mit Zitat antworten
Alt 13.07.2008, 17:11  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Code:
int(200) int(50)
Da ist wohl irgendwo noch ein var_dump() drin!
phpdummi ist offline   Mit Zitat antworten
Alt 13.07.2008, 22:14  
Benutzer
 
Registriert seit: 23.08.2006
Beiträge: 86
Canni
Standard

Upsla. Das mit dem var_dump stimmt. Hab´s draußen. Aber das Problem ist das Gleiche.
Das Captcha wird mitten in der Site verwendet ( im werdenden Gästebuch ), demzufolge ist auch der Header schon draußen und Ausgabe gibt es auch schon genug. Das läßt sich auch nicht ändern.

Ich dachte in die Richtung meinen Header zu erweitern, z.B. mit
Code:
<meta http-equiv=\"content-type\" content=\"image/gif\" />
Das haut aber nicht hin
Der komplette Header sieht im Mom so aus:
Code:
			<head>
				<title>$title</title>
				<meta http-equiv=\"content-type\" content=\"text/html; charset=$charset\">
				<meta name=\"description\" content=\"$description\">
				<meta name=\"keywords\" content=\"$keywords\">
				<meta name=\"author\" content=\"$author\">
				<meta name=\"content-language\" content=\"$content_language\">
				<meta name=\"revisit-after\" content=\"$revisit_after\">
				<meta name=\"robots\" content=\"$robots\">
				<link rel=\"stylesheet\" type=\"text/css\" href=\"$style\">
			</head>
Canni ist offline   Mit Zitat antworten
Alt 15.07.2008, 12:03  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die HTML-Seite, in der das Captcha angezeigt werden soll, muss es per [img]captcha.php[/img] einbinden.
capthca.php kann dann auch die korrekten Header-Informationen senden.
phpdummi ist offline   Mit Zitat antworten
Alt 15.07.2008, 19:05  
Benutzer
 
Registriert seit: 23.08.2006
Beiträge: 86
Canni
Standard

Hi.
Klasse! Das hat so sehr fein hingehauen. Danke dir!
Canni ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] problem keine ausgabe coraplanet PHP Tipps 2008 12 02.05.2008 18:51
Class Ausgabe Problem wk-moray PHP-Fortgeschrittene 6 12.02.2008 10:06
Imagefunktionen: Problem bei GIFs rocco PHP Tipps 2007 12 23.07.2007 21:57
problem mit ausgabe von daten phyton Datenbanken 3 02.07.2007 17:44
Problem mit der Ausgabe Kein Genie PHP Tipps 2006 5 26.11.2006 21:24
Problem mit der Ausgabe PHP Tipps 2005-2 2 29.07.2005 18:09
problem bei ausgabe einer abfrage aus 2 Tabellen Lia PHP Tipps 2005-2 2 28.07.2005 17:30
Problem mit PFad Firefox - Verzeichnis löschen PHP Tipps 2005-2 0 19.07.2005 16:05
Problem mit Ausgabe in Optionfelder (<select>) Monty77 PHP Tipps 2005 4 27.01.2005 22:33
[Erledigt] Problem mit Text Ausgabe in neuem Fenster PHP Tipps 2005 6 18.01.2005 14:24
variablen ausgabe problem..... PHP Tipps 2005 3 06.01.2005 02:27
Problem mit Ausgabe picco PHP Tipps 2004-2 2 24.12.2004 15:38
problem mit ausgabe bei einer "tmp"-table... nautiluS PHP Tipps 2004-2 0 20.12.2004 15:12
Problem mit Array und Ausgabe picco PHP Tipps 2004-2 3 16.12.2004 23:03
Problem bei SESSION Ausgabe PHP Tipps 2004 7 07.06.2004 20:03

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php code captcha gif, gifs verzeichnis, php imagegif einbinden, imagegif bild löschen, captcha gif fehler, captcha, php kalender hintergrundbild als gif, <meta http-equiv=\content-type\ content=\image/gif\>

Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.