php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.08.2007, 22:29  
Neuer Benutzer
 
Registriert seit: 30.07.2007
Beiträge: 7
jjackisc
Standard mit ajax captcha neu laden und generieren

huhu liebe Leute,
Ich habe ein merkwürdiges Problem und weiß einfach nich woran es liegt
ich generiere ein captcha klappt alles super, zeige es auf der seite an und habe da einen link gemacht auf den man klicken soll wenn man das captcha nicht erkennt, dieses wird per ajax neu geladen und die captcha.php neu ausgefüht. das merkwürdige ist bei dem klicken auf den link macht er es manchmal, manchmal aber passiert garnix nun weiß ich nicht ob es am php code des captchas lkieght das es einfach zu ineffizient ist oder ob ich einen fehler in meinem javascript habe ich bitte daher um eure hilfe.
Quelltext:

erst das des captchas:

PHP-Code:
/* Create Capctha */
$str_array = array("A""C""F""H""J""L""N""P""S""U""V""X""Z""B""D""F""H""J""L""N""P""Q""S""U""W""Y"123456789);

$ttfarr = array();
/*ttf array dynamisch generieren*/
$ordner dirname(__FILE__)."/../library/ttf/";
$handle opendir($ordner);
while (
$file readdir($handle))
       if(
$file != "." && $file != ".." && !is_dir($ordner."/".$file))
           
$ttfarr[] = $file;
closedir($handle);

$char_seq "";

for(
$i 0;$i 5;$i++) {
    
$int = (int)rand(0count($str_array)-1);
    
$char_seq .= $str_array[$int];
}


$num_chars 4;
$width 250;
$height 100;
$img imagecreatetruecolor($width $height);
imagealphablending($img1);
imagecolortransparent($img);
// generate background of randomly built ellipses
for ($i 1$i <= 55$i++) {
    
$r round(rand(0100));
    
$g round(rand(0100));
    
$b round(rand(0100));
    
$color imagecolorallocate($img$r$g$b);
    
imagefilledellipse($imground(rand(0$width)), round(rand(0$height)), round(rand(0$width 16)), round(rand(0$height 4)), $color);
}

$start_x round($width $num_chars);
$max_font_size $start_x;
$start_x round(0.5 $start_x);
$max_x_ofs round($max_font_size 0.9);
// set each letter with random angle, size and color

for($i=0;$i<=5;$i++)
{

    
$r = (int)rand(127255);
    
$g = (int)rand(127255);
    
$b = (int)rand(127255);
    
$y_pos = ($height 2) + (int)rand(520);

    
$fontsize = (int)rand(23$max_font_size);
    
$color imagecolorallocate($img$r$g$b);
    
$presign = (int)rand(01);
    
$angle round(rand(025));
    if (
$presign == true$angle = -$angle;

    
$randttf round(rand(0count($ttfarr)-1));
    
$ttf $ordner $ttfarr[$randttf];
    
$x =  $start_x $i $max_x_ofs+7;
ImageTTFText($img$fontsize$angle,$x$y_pos$color,$ttfsubstr($char_seq$i1));
}
// create image file
imagejpeg($img,dirname(__FILE__)."/../library/images/captcha.jpg",65);
flush();
imagedestroy($img);
/* Captcha End */ 
nun der javascript

Code:
function refreshCaptcha()
{
//globale Instanz von XMLHttpRequest
var xmlHttp = false;

//XMLHttpRequest-Instanz erstellen
//... für Internet Explorer
try {
    xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
    try {
        xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
        xmlHttp  = false;
    }
}
//... für Mozilla, Opera, Safari usw.
if (!xmlHttp  && typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();
}

if (xmlHttp) {
     xmlHttp.open('GET', './libs/captcha.php?param=1', true);
     xmlHttp.onreadystatechange = function () {
         if (xmlHttp.readyState == 4) {
        captcha = new Image();
        captcha.src = "./library/images/captcha.jpg";
        document.getElementById("captcha").src = captcha.src;
		//document.getElementById("asb_content").innerHTML = xmlHttp.responseText;
         }
     };
     xmlHttp.send(null);
 }

}
ich würde mich auch um optimierungen freuen

mit freundlichen grüßen Jörg
__________________
If u want to understand recursion, u must first understand recursion
jjackisc ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 09.08.2007, 23:35  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo und willkommen hier im Forum!

Ob der Fehler an PHP oder JavaScript liegt, kannst du rausfinden, in dem Du statt JavaScript den Request anstößt. 20x hintereinander. Dann siehst du ja ob es angezeigt wird.

Übrigens, für Zeile 1 kannst du auch range() verwenden, Ordner liest man mittlerweile mit glob() aus und das Captcha Site-weit in der selben Datei speichern ist auch nicht so geschickt. Gleichzeitige User überschreiben die Datei, es könnte zu Zugriffsverletzungen kommen. Lieber eine captcha.php erzeugen, die das erstellte Bild gleich anzeigt und den Text in die Session schreibt. Da fällt mir auf, wo speicherst du dein erzeugtes Wort eigentlich zum späteren Vergleich ab ..
Zergling-new ist offline   Mit Zitat antworten
Alt 10.08.2007, 00:03  
Neuer Benutzer
 
Registriert seit: 30.07.2007
Beiträge: 7
jjackisc
Standard

huhu danke erstmal
wie meinst du das mit dem anstoßen??
die funktionen die du erwähnst werde ich mir mal anschauen, mit dem bild als php datei ahst du recht werde ich machen,
ich wollte den text der im captcha steht base64 kodiert in ein hidden feld schreiben und ein 2. hidden feld mit einem anderen unrelevanten key eine id oder irgendwas und wollte das wie eine art user passwort auswerten.

wie würdest du das denn machen?
__________________
If u want to understand recursion, u must first understand recursion
jjackisc ist offline   Mit Zitat antworten
Alt 10.08.2007, 02:28  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Mit Sessions.

anstoßen = im Browser aufrufen
Zergling-new ist offline   Mit Zitat antworten
Alt 10.08.2007, 12:31  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.037
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

eigentlich müsste es doch reichen, wenn man das bild "einfach" neu läd (ohne ajax), da der source der die session generiert beimm erstellen des bildes sowieso aufgerufen wird ? demnach bringt das anstupsen via ajax nix, weil es eh aufgerufen wird wenn es neu geladen wird.
notyyy ist offline   Mit Zitat antworten
Alt 10.08.2007, 13:11  
Neuer Benutzer
 
Registriert seit: 30.07.2007
Beiträge: 7
jjackisc
Standard

huhu
habe jetzt so gemacht das es eine php datei ist mit content type image/jpeg
aber der witz ist wenn ich die php datei im browser aufrufe klappt es auch beim aktualisieen kommt ein neuer code wenn ich jetzt mit javascript nur das bild neu lade passiert nix....
könnt ihr euch mal meinen javascript code ansehen vielleicht habe ich auch einen fehler

Code:
function refreshCaptcha()
{
        captcha = new Image();
        captcha.src = "./libs/captcha.php";
        document.getElementById("captcha").src = captcha.src;
}
aufrufen tu ich es so :

Code:
<div id='captcha' OnClick='javascript:refreshCaptcha();'> neu laden</div>
__________________
If u want to understand recursion, u must first understand recursion
jjackisc ist offline   Mit Zitat antworten
Alt 10.08.2007, 13:45  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wie es passiert nix? Was steht in der JavaScript-Konsole?
Zergling-new ist offline   Mit Zitat antworten
Alt 10.08.2007, 14:48  
Neuer Benutzer
 
Registriert seit: 30.07.2007
Beiträge: 7
jjackisc
Standard

in der konsole steht nix drin,
mh das problem liegt daran das er das bild nicht refresht da der pfad der selbe ist :/
vermute ich
__________________
If u want to understand recursion, u must first understand recursion
jjackisc ist offline   Mit Zitat antworten
Alt 10.08.2007, 15:03  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Achso, dann häng einen zufälligen Parameter an den Aufruf, dann holt er sich die Grafik nicht aus dem Cache.
Zergling-new ist offline   Mit Zitat antworten
Alt 10.08.2007, 15:27  
Neuer Benutzer
 
Registriert seit: 30.07.2007
Beiträge: 7
jjackisc
Standard

ja danke jetzt gehts
erzeuge nun per javascript eine zufälige zahl und lade danndamit das captcha juhu
zergling sol ich zu captchas mal ein tutorial schreiben
also so was ist captcha ... wie funzt es usw.??


viele grüße Jörg
__________________
If u want to understand recursion, u must first understand recursion
jjackisc 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
Ajax --- Nur einmal nachladen PHP4ever JavaScript, Ajax und mehr 4 21.07.2008 13:18
class.GMapper --> Mit Firefox Problem bei Ajax Plague PHP Tipps 2008 3 08.07.2008 10:31
Gleichungs Captcha PHP litterauspirna PHP-Fortgeschrittene 17 25.05.2008 21:06
Captcha in Website einbauen Dartgott PHP Tipps 2008 9 23.04.2008 15:53
Captcha in bestehendes GB einbauen ZeroQL PHP Tipps 2008 6 08.04.2008 15:32
AJAX: Session-Inhalt an PHP Curanai HTML, Usability und Barrierefreiheit 2 05.11.2007 15:45
AJAX open mit POST und GET DonTermi HTML, Usability und Barrierefreiheit 5 04.10.2007 18:22
Fileupload via AJAX GSJLink HTML, Usability und Barrierefreiheit 11 07.09.2007 15:44
Javascript in Ajax responseText funktioniert nicht Plague PHP Tipps 2007 6 03.07.2007 21:08
Ajax bild.php aktualisieren M3g4Star HTML, Usability und Barrierefreiheit 3 09.03.2007 17:14
Ajax und Sonderzeichen? GSJLink HTML, Usability und Barrierefreiheit 1 11.11.2006 14:36
AJAX: Newsflash: How to? SvenLittkowski HTML, Usability und Barrierefreiheit 11 26.09.2006 23:14
[Erledigt] Probleme mit Einbindung Captcha PHP Tipps 2006 0 18.08.2006 19:42
mit ajax captcha neu laden und generieren phpbeginner HTML, Usability und Barrierefreiheit 6 18.08.2005 16:03
Bestimmte Dateien am Anfang der Seite laden HTML, Usability und Barrierefreiheit 8 10.07.2005 22:30

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ajax captcha, php ajax captcha, captcha ajax, captcha neu laden ajax, captcha php ajax, php captcha ajax, ajax image generieren, http://www.php.de/php-fortgeschrittene/44553-mit-ajax-captcha-neu-laden-und-generieren.html, captcha per ajax aktualisieren, javascript captcha, ajax captcha neu laden, ajax catcha neu laden, captcha neu laden, recaptcha nachladen ajax, bild ajax php neuladen, recaptcha per ajax nachladen, ajax bild erzeugen, xmlhttprequest zugriffsverletzung, recaptcha via ajax nachladen, bild generieren mit ajax

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 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.