php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.12.2011, 10:49  
Neuer Benutzer
 
Registriert seit: 17.12.2011
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
fg__killer befindet sich auf einem aufstrebenden Ast
Standard

Ich habe es mal ein bisschen umgeschrieben, sollte so funktionieren.

PHP-Code:
<?php
session_start
();
header('Content-type: image/png');
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

if(
$SESSION['captcha']<time()-2) {
    
$bild imagecreatefrompng("2.png");
    function 
srand($a$b) { return rand(-11); }
    
$chars "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    
$chars .= strtolower($chars);
    
$chars .= "0123456789";
    
$chars str_split($chars);
    
usort($chars'srand');
    
$chars join(""$chars);
    
$length 5;

    function 
rnd() {
        global 
$chars;
        
$a strlen($chars);
        
$b = (int)(rand(0$a-1));
        return 
substr($chars$b1);
    }
    
    
$str "";
    
    for(
$i=0;$i<$length;$i++) {
        
$c rnd();
        
$str .= $c;
        
$angle rand(-3030);
        
$size rand(2432);
        
$j rand(-1010);
        
$farbe_b imagecolorallocate($bild000);
        
imagettftext($bild$size$angle, ($i*30+50), (92+$j), $farbe_bdirname(__FILE__).DIRECTORY_SEPARATOR.'arial.ttf'$c);
    }
    global 
$SESSION;
    @
unlink('captcha/cap'.$SESSION['captcha'].'.png'); // ordner captcha sollte chmod 777 haben
    
$SESSION['captcha_str'] = $str;
    
$SESSION['captcha'] = time();
    
$a->__destruct();
    
imagepng($bild'captcha/cap'.$SESSION['captcha'].'.png');
}
echo 
file_get_contents('captcha/cap'.$SESSION['captcha'].'.png');

Geändert von fg__killer (18.12.2011 um 11:02 Uhr).
fg__killer ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.12.2011, 13:48  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Da dürfte so ziemlich garnichts funktionieren...
Zitat:
PHP-Code:
global $SESSION
1. Ist die Session superglobal
2. Ist sie falsch geschrieben: $_SESSION

global ist generell schlechter Stil. Funktionsparameter sind guter Stil.

"conditional function declaration" ist ebenfalls schlechter Stil. (D.h. du hast eine Funktion innerhalb eines if-Blocks deklariert)

srand() ist eine Funktion aus der PHP API. Redeklaration gibt einen fatalen Fehler.

Zitat:
PHP-Code:
$a->__destruct(); 
Magische Methoden sollte man niemals direkt aufrufen (sonst ist die Magie dahin ), die werden automagisch aufgerufen, wenn die Umstände passen.
Es gibt Ausnahmen, z.B. Aufruf des Parent-Destruktors. Das passiert aber im Destruktor der abgeleiteten Klasse.
Besser wäre in diesem Fall:
PHP-Code:
unset($a); 
Der Code ist weit entfernt von dem, was man von einem Fortgeschrittenen erwarten darf.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 18.12.2011, 14:39  
Benutzer
 
Registriert seit: 18.12.2011
Beiträge: 37
PHP-Kenntnisse:
Fortgeschritten
K313 befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<?php
session_start
();
header('Content-type: image/png');
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

if(
$_SESSION['captcha']<($time=time())-2) { // 1. $_SESSION    2. wenn du 2 mal oder mehr die functionsergebnis benutzst- speicher die ergebnis einfach in eine variable (eine function auszurufen braucht php viel meher zeit und memory)
    
$bild imagecreatefrompng("2.png"); // wenn der hintergrund nicht zu wichtig ist, dann lieber "$bild=imagecreatetruecolor(width,height)".  bei dir muss php viele schritte schaffen: 1. die file finden; 2. ablesen; 3. von png-format in gd2-format umwandeln.
    
function srand($a$b) { return rand(-11); }// ????? gibd diese function  etwas anderes als "rand(-1,1);" aus?
    
$chars "ABCDEFGHIJKLMNOPQRSTUVWXYZ"// wenn du macht's so   $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - dann werden ALLE deine php-scripts im variable $chars ein link an diese string behalten was bedeutet etwa 6-10 bytes im memory
    
$chars .= strtolower($chars); // aber wenn du die variable verenderst, dann muss php neues object im memory erzeugen...
    
    // alles folgendes was um eine zufälige code zu bauen geht ist Überschuss...
    
$chars .= "0123456789";
    
$chars str_split($chars);
    
usort($chars'srand');
    
$chars join(""$chars);
    
$length 5;

    function 
rnd() { // zu viel arbeit für gleiches geld.....
        
global $chars;
        
$a strlen($chars);
        
$b = (int)(rand(0$a-1));
        return 
substr($chars$b1); //wenn du nur ein simbol brauchst so siet es besser aus " return $chars{$b}; "
    
}
    
     
// bis hier
    
     
   
$str "";
    
 
    for(
$i=0;$i<$length;$i++) { // $length bei dir is fest und glecht 5 " for($i=0;$i<5;$i++) { "
        
$c rnd(); // du brauchst diese function nicht immer wieder auszurufen
        
$str .= $c// man kann einfach so " $str.=$chars{rand(0, 65)} ; " du hast stabile lenge des strings $chars

        // und hier alles im gegenteil dies " $time=time() ",  du verwenderst folgende variables nur ein mal, wofür dann erzeugst du neue variables? fur php bedeutet es meher arbeit und memoryverwendung
        
$angle rand(-3030);
        
$size rand(2432);
        
$j rand(-1010);

        
$farbe_b imagecolorallocate($bild000);
        
imagettftext($bild$size$angle, ($i*30+50), (92+$j), $farbe_bdirname(__FILE__).DIRECTORY_SEPARATOR.'arial.ttf'$c);
        
//  nach gnädige weise "  imagettftext($bild, rand(24, 32), rand(-30, 30), ($i*30+50), (92+rand(-10, 10)), $farbe_b, dirname(__FILE__).DIRECTORY_SEPARATOR.'arial.ttf', $c); "
    
}
    global 
$SESSION// $_SESSION ist immer globalvariable denke ich.... :roll:
    
@unlink('captcha/cap'.$SESSION['captcha'].'.png'); // ordner captcha sollte chmod 777 haben -------  nein die benutzern dürfen in diesem ordner kein php-script ausrufen und auch nicht lesen und writen, dass bedeutet mindestens 0770 (vorstehende 0 nicht vergessen). Aber du hast dort vielleich auch kein php-script, du benotigst dies ord nur zum lesen und writen, und dann chmod = 0760
    
$SESSION['captcha_str'] = $str;
    
$SESSION['captcha'] = time();
    
$a->__destruct();
    
imagepng($bild'captcha/cap'.$SESSION['captcha'].'.png'); // :-| und jetzt uberhaupt ganz toll... du speicherst das bild in file und danach wirdst wieder dies file ablesen... mit welchem zweck?.....
}
echo 
file_get_contents('captcha/cap'.$SESSION['captcha'].'.png');
K313 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
Variablenübergabe mit $_Session funktioniert nicht richtig salerno PHP Einsteiger 5 25.09.2011 15:59
[Erledigt] function funktioniert ohne alert() nicht richtig Tholi JavaScript, Ajax und mehr 1 19.02.2011 02:40
[Erledigt] Captcha funktioniert nicht DJ_RhoxxZ PHP Tipps 2010 12 22.07.2010 14:20
[Erledigt] FTP und MySQL funktioniert nicht mehr richtig JackSparrow PHP Tipps 2010 2 06.06.2010 20:54
Verschlüsselung funktioniert nicht richtig netmario PHP Tipps 2010 2 19.05.2010 22:57
[Erledigt] Checkuser und/oder Logout funktioniert nicht richtig p300d PHP Tipps 2009 7 28.06.2009 13:33
Select funktioniert nicht richtig JooiPHP Datenbanken 7 18.06.2009 15:09
[Erledigt] Apache funktioniert nicht richtig YYA Server, Hosting und Workstations 5 16.06.2008 15:24
Warum funktioniert meine Statistik nicht richtig? Calli PHP Tipps 2007 1 27.11.2005 08:49
Script funktioniert nicht richtig -> fehlermeldungen PHP Tipps 2005-2 2 12.09.2005 11:29
Karte funktioniert nicht ganz richtig ( koardinaten system ) PHP Tipps 2005-2 7 15.06.2005 16:48
PHP funktioniert nicht richtig?! PHP Tipps 2005-2 26 11.06.2005 09:05
datenübergabe funktioniert nicht richtig Fraylman PHP Tipps 2004 6 25.08.2004 13:49
Emailversendung funktioniert nicht richtig PHP Tipps 2004 1 11.08.2004 23:16
php funktioniert nicht richtig PHP Tipps 2004 3 14.06.2004 08:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
$_session, captcha, imagepng chmod captcha

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:14 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