| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

04-04-2011, 11:50
|
|
Prominenter
Registrierter Benutzer
|
|
Registriert seit: Apr 2004
Beiträge: 136
|
|
Captcha ?
Hi@all
Habe folgende Captcha.php
PHP-Code:
<?php
session_name('CAP');
session_start();
error_reporting(E_ALL);
# Benötigte Files laden! Hier kann editiert werden!
$CAPTCHA_TempString = "";
# Zufallsfunktion für Zahlen und Buchstaben
function GetRandomChar()
{
# Zufallszahl generieren
mt_srand((double)microtime()*1000000);
$CAPTCHA_RandVal = mt_rand(1,2);
# Buchstabensalat generieren jeh nachdem ob Randval 1 oder 2 ist
switch ($CAPTCHA_RandVal)
{
case 1:
# Zahlen 0-9
$CAPTCHA_RandVal = mt_rand(48, 57);
break;
case 2:
# Grosse Buchstaben
$CAPTCHA_RandVal = mt_rand(65, 90);
break;
}
# Zufallscode ausgeben
return chr($CAPTCHA_RandVal);
}
# Zufallscode x-stellig ausgeben
for ($i = 1; $i <= 6; $i++)
{
$CAPTCHA_TempString .= GetRandomChar();
}
# Text in Sessionvariable speichern
if (isset($CAPTCHA_TempString))
{
$_SESSION['captcha'] = str_replace('I','E',str_replace('0','3',str_replace('1','S',str_replace('O','P',str_replace('4','A',str_replace('D','K',$CAPTCHA_TempString))))));
}
else
{
die("Zufallscode konnte nicht generiert werden!");
}
// Alternative Grafik-Zeichenfunktion nutzen?
// (bei fehlerhafter Darstellung oder fehlendem Truetype-support) 1=nein, 2=ja
$imagettftext = "1";
$Welleneffekt = "1";
$Textgroesse = 30;
$Texthoehe = 45;
$Schriftart = "mistral.ttf";
$bg1 = "background1.png";
$bg2 = "background2.png";
$ov1 = "overlay1.png";
$ov2 = "overlay2.png";
// Benötige Strings überprüfen
if (isset($_SESSION['captcha']))
{
$CAPTCHA_RandomText = $_SESSION['captcha'];
}
else
{
// Fehlermeldung ausgeben
header ("Content-type: image/png");
$im = @imagecreatetruecolor(250, 30) or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10, 5, 7, "Kein Zufallscode übergeben!", $text_color);
imagepng($im);
imagedestroy($im);
exit();
}
// Auf Funktion überprüfen
if ($imagettftext == "1")
{
// Benötige Files überprüfen
if (!file_exists($Schriftart))
{
// Fehlermeldung ausgeben
// header ("Content-type: image/png");
$im = @imagecreatetruecolor(250, 30) or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10, 5, 7, "Schriftart nicht gefunden!", $text_color);
imagepng($im);
imagedestroy($im);
exit();
}
if (!file_exists($bg1) OR !file_exists($bg2))
{
// Fehlermeldung ausgeben
header ("Content-type: image/png");
$im = @imagecreatetruecolor(250, 30) or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10, 5, 7, "Hintergrundbild nicht gefunden!", $text_color);
imagepng($im);
imagedestroy($im);
exit();
}
if (!file_exists($ov1) OR !file_exists($ov2))
{
// Fehlermeldung ausgeben
header ("Content-type: image/png");
$im = @imagecreatetruecolor(250, 30) or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10, 5, 7, "Overlaybild nicht gefunden!", $text_color);
imagepng($im);
imagedestroy($im);
exit();
}
// Zufallshintergrund
mt_srand((double)microtime()*1000000);
$Bild1 = mt_rand(1, 2);
switch ($Bild1)
{
case 1:
$Grafik=imagecreatefrompng($bg1);
$Grafikhilf=imagecreatefrompng($bg1);
break 1;
case 2:
$Grafik=imagecreatefrompng($bg2);
$Grafikhilf=imagecreatefrompng($bg2);
break 1;
}
// Zufallsgrafik2
mt_srand((double)microtime()*1000000);
$Bild2 = mt_rand(1, 2);
switch ($Bild2)
{
case 1:
$Grafik2=imagecreatefrompng($ov1);
break 1;
case 2:
$Grafik2=imagecreatefrompng($ov2);
break 1;
}
// Textfarben ins Array speichern
$textfarbe = array( imagecolorallocate($Grafik, 128, 128, 128),
imagecolorallocate($Grafik, 0, 0, 0),
imagecolorallocate($Grafik, 50, 171, 4),
imagecolorallocate($Grafik, 128, 0, 128),
imagecolorallocate($Grafik, 128, 128, 255),
imagecolorallocate($Grafik, 255, 128, 128),
imagecolorallocate($Grafik, 192, 122, 0),
imagecolorallocate($Grafik, 250, 94, 250),
imagecolorallocate($Grafik, 122, 146, 224),
imagecolorallocate($Grafik, 122, 155, 180)
);
// Text auf das Bild schreiben
imagettftext($Grafik, $Textgroesse, mt_rand(-13, 13), 10, $Texthoehe+mt_rand(-7,8), $Textfarbe1 = $textfarbe[array_rand($textfarbe)] , $Schriftart, $CAPTCHA_RandomText[0]);
imagettftext($Grafik, $Textgroesse, mt_rand(-13, 13), 45, $Texthoehe+mt_rand(-7,8), $Textfarbe2 = $textfarbe[array_rand($textfarbe)] , $Schriftart, $CAPTCHA_RandomText[1]);
imagettftext($Grafik, $Textgroesse, mt_rand(-13, 13), 80, $Texthoehe+mt_rand(-7,8), $Textfarbe3 = $textfarbe[array_rand($textfarbe)] , $Schriftart, $CAPTCHA_RandomText[2]);
imagettftext($Grafik, $Textgroesse, mt_rand(-13, 13), 113, $Texthoehe+mt_rand(-7,8), $Textfarbe4 = $textfarbe[array_rand($textfarbe)] , $Schriftart, $CAPTCHA_RandomText[3]);
imagettftext($Grafik, $Textgroesse, mt_rand(-13, 13), 150, $Texthoehe+mt_rand(-7,8), $Textfarbe5 = $textfarbe[array_rand($textfarbe)] , $Schriftart, $CAPTCHA_RandomText[4]);
imagettftext($Grafik, $Textgroesse, mt_rand(-13, 13), 191, $Texthoehe+mt_rand(-7,8), $Textfarbe6 = $textfarbe[array_rand($textfarbe)] , $Schriftart, $CAPTCHA_RandomText[5]);
// Welleneffekt
if ($Welleneffekt == "2")
{
$stauchung = mt_rand(0,100)/400+0.10;
$Grafikalt = $Grafik;
$Grafik = $Grafikhilf;
for ($i=1;$i<=65;$i++)
{
imagecopy($Grafik, $Grafikalt, round((sin($i*$stauchung)*2))+3, $i, 1, $i, 230,1);
}
}
// Transparente Grafik drüberlegen
imagecopy($Grafik, $Grafik2, 0, 0, 0, 0, 230, 65);
// Bild ausgeben
header("Content-type: image/png");
imagepng($Grafik);
imagedestroy($Grafik);
}
else if ($imagettftext == "2")
{
// Alternativbild ausgeben
header ("Content-type: image/png");
$im = @imagecreatetruecolor(70, 30) or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 255, 255, 255);
imagestring($im, 10, 5, 7, $CAPTCHA_RandomText, $text_color);
imagepng($im);
imagedestroy($im);
}
else
{
// Fehlermeldung ausgeben
header ("Content-type: image/png");
$im = @imagecreatetruecolor(430, 30) or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10, 5, 7, "Fehlerhafte Auswahl($imagettftext)der Funktion! (1 od. 2)", $text_color);
imagepng($im);
imagedestroy($im);
exit();
}
?>
Auf meinem Localhost (HomeRechner) funktioniert alles, doch online leider nicht.
Kann mir jemand bitte helfen.
Thx@all
|

04-04-2011, 12:08
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
soll ich das Thema gleich trashen oder willst du vielleicht doch noch dazuschreiben - was du damit meinst, dass es nicht funktioniert
- welches Verhalten du erwartest
- welches Verhalten tatsächlich auftritt
- welche Debuggingmaßnahmen du durchgeführt hast
- welche Ergebnisse und Vermutungen daraus resultieren
- was du selbst versucht hast, um es zu beheben
- warum du den Code nicht auf den wirklich relevanten Teil beschränkt hast
?
Wir sind keine kostenlose Reparaturanstalt für geklauten und kaputteditierten PHP-Code.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (04-04-2011 um 12:10 Uhr)
|

04-04-2011, 12:16
|
|
Prominenter
Registrierter Benutzer
|
|
Registriert seit: Apr 2004
Beiträge: 136
|
|
@AmicaNoctis
Upps, nicht gleich so heftig.
Also auf meinem localen rechner wird nach ausführen dieses Codes ein Bild mit aufgeschriebenen Buchstaben ausgegeben.
Nachdem ich die Datei auf meinen Server geladne habe wird nur noch das Bild ausgegeben, ohne Buchstaben.
Ich bekomme keine Fehlermeldung.
Leider weiß ich nicht wo ich den Fehleransatz machen soll, deshalb der komplette Code der Datei und meine Bitte ob mir jemand einen Tipp geben kann woran das liegen könnte, das es local funktioniert und online eben nicht.
Thx@all
|

04-04-2011, 12:24
|
|
Prominenter
Registrierter Benutzer
|
|
Registriert seit: Apr 2004
Beiträge: 136
|
|
OK, danke, hat sich erledigt.
Die Pfadangabe zur Schriftart muss:
PHP-Code:
$Schriftart = $_SERVER['DOCUMENT_ROOT']."/pfad/schriftart.ttf";
lauten.
Thx@all
Kann geschlossen werden.
|

04-04-2011, 12:26
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von Prominenter
Upps, nicht gleich so heftig.
|
Du bist halt nicht der erste, der meint, Forenregeln seien nur zum Spaß da und nach dem 1000sten Mal fängt es leicht an, zu nerven.
Zitat:
Zitat von Prominenter
Also auf meinem localen rechner wird nach ausführen dieses Codes ein Bild mit aufgeschriebenen Buchstaben ausgegeben.
Nachdem ich die Datei auf meinen Server geladne habe wird nur noch das Bild ausgegeben, ohne Buchstaben.
Ich bekomme keine Fehlermeldung.
|
Das ist ja schonmal eine Fehlerbeschreibung.
Ist auf dem Server TrueType-Support verfügbar? Hast du die zu benutzende TTF-Datei auch mit hochgeladen?
[Edit] Alles klar.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

04-04-2011, 23:25
|
|
sEeb
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Beiträge: 135
|
|
wie schon gesagt, vermutlich fehlen nötige bibliotheken
zum finden des fehlers sollten du neben
error_reporting(E_ALL);
auch
ini_set('display_errors',true); setzen
und weiter unten das Senden der Header ausschalten.
Dann siehst du die Fehler normalerweise sofort, hat mir bei der captcha Programmierung sehr geholfen
|

04-04-2011, 23:27
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von sEeb
wie schon gesagt, vermutlich fehlen nötige bibliotheken
|
Wie ebenfalls schon gesagt:
Zitat:
Zitat von Prominenter
OK, danke, hat sich erledigt.
|
- und das schon einen halben Tag vor deinem Beitrag ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
Ähnliche Themen
|
| Thema |
Autor |
Forum |
Antworten |
Letzter Beitrag |
|
Captcha mit JS
|
E.T. |
HTML, JavaScript, AJAX und CSS |
6 |
07-09-2009 10:28 |
|
JS Captcha
|
wizzardxx |
HTML, JavaScript, AJAX und CSS |
17 |
12-02-2009 14:44 |
|
Ich bau mir nen Rechen-Captcha
|
litterauspirna |
PHP Developer Forum |
65 |
22-05-2008 13:41 |
|
Captcha Probs
|
Fry2k |
PHP Developer Forum |
7 |
03-12-2006 15:29 |
|
Captcha
|
Charly |
Projekthilfe |
3 |
27-11-2006 16:58 |
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|