Nolem, La fonction GET n'a pas de secret pour toi ?

ViPHP
ViPHP | 5462 Messages

06 janv. 2010, 11:03

voir faire un extract du $_POST aussi,
j'ai commencé a refaire tout mais quand je me suis rendu compte du remplissage de fichier j'ai abandonné

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 janv. 2010, 11:37

Le array $tabRegion comporte des clefs numériques dont je ne vois pas vraiment l'utilité. Enfin bref, il y a quand même une erreur à la fin : la virgule de trop.[/php]
Syntaxiquement, ce n'est pas une erreur, et je trouve cette écriture très pratique pour les tableaux de paramétrage, pour ne pas avoir à se soucier de la présence de la virgule à la valeur précédente
Pour que ton générateur de mot de passe fonctionne remplacer :
$chaine = "abBDEFcdefghijkmnPQRSTUVWXYpqrst23456789";
srand((double)microtime()*1000000);
for($i=0; $i<8; $i++)
{ //mot de passe de 8 caractères
$pass .= $chaine[rand()%strlen($chaine)]; // ça ne risque pas de fonctionner correctement
}
par :
/*
 correction mot de passe 8 caractères
*/
$pass = "";
$caractere_password = array();
$caractere_numerique = array();
$caractere_majuscule = array();
$caractere_minuscule = array();

$caractere_numerique = range(0,9);
$caractere_majuscule = range("A","Z");
$caractere_minuscule = range("a","z");
$caractere_password = array_merge($caractere_numerique,$caractere_majuscule,$caractere_minuscule);


for($i = 0 ; $i < 8 ; $i++){
    shuffle($caractere_password);
    $clef_aleatoire = array_rand($caractere_password);
    $pass .= $caractere_password[$clef_aleatoire];
}
Bien que ta correction soit juste, je ne vois pas en quoi son code "ne risque pas de fonctionner correctement".
Au contraire, je trouve même l'optimisation sympathique.
Et, pour ton code, je ne vois pas l'intérêt d'initialiser des tableaux vides pour faire un range derrière. L'initialisation des variables est une excellente pratique lorsque tu ne connais pas le contenu futur, mais là, tu gères de A à Z (joke) son contenu.
De plus, je ne vois pas l'intérêt de faire un suffle() sur la liste des caractères autorisés si tu fait un array_rand() derrière :?

Tout ceci pour dire qu'il faut prendre garde, un code peut paraitre abstrait, mais il répond à une logique, celle du développeur, et qu'avant de la critiquer, il faut la comprendre, pour savoir s'il est dans le droit chemin ou non ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 16 Messages

06 janv. 2010, 14:49

:D merci beaucoup.

Bien sur y'a a boire a manger et peut être même des ration de secoure dans le cas ou t'en a pas assez j'en profite c'est pas moi qui et codé ce bidule mais bon :mrgreen: . Puis je me demande quelle est votre métier parce-que si votre métier ne touche pas au php hé bah miyarre vous êtes très polyvalents.

salut.

Ps: Allez avouez qu'il vous angoisse ce code :twisted:
Je déteste mais alors je déteste les jeux vidéo sauf quelque un. On s'en fiche je sait mais vous avez tous une signature alors moi aussi Hé Ho la! :p

Eléphant du PHP | 453 Messages

06 janv. 2010, 18:30

Hello, :)
Syntaxiquement, ce n'est pas une erreur, et je trouve cette écriture très pratique pour les tableaux de paramétrage, pour ne pas avoir à se soucier de la présence de la virgule à la valeur précédente
Je ne savais pas qu'il était possible d'ajouter une virgule en fin de tableau. Il me semblait qu'auparavant j'avais des erreurs de type notice. Ce qui n'est pas grave en soit puisque ça ne change pas à l'exécution du programme et que cela veut tout simplement dire que c'est un avertissement, n'est ce pas ? Je crois qu'un avertissement dans un script peut générer un comportement bizarre plus loin. Quand on peut éviter, ce n'est que mieux.
Bien que ta correction soit juste, je ne vois pas en quoi son code "ne risque pas de fonctionner correctement".
Ah oui pardon. J'avais fait surement une manip/instruction qui plantait le programme. Là en le relisant l'original, je me suis trompé à propos de ces lignes (modulo). Ce code génèrera de tout manière une erreur de type notice puisque la variable $pass n'est pas initialisée (cf. ton/ta intervention/réponse plus bas).
Au contraire, je trouve même l'optimisation sympathique.
Et, pour ton code, je ne vois pas l'intérêt d'initialiser des tableaux vides pour faire un range derrière. L'initialisation des variables est une excellente pratique lorsque tu ne connais pas le contenu futur, mais là, tu gères de A à Z (joke) son contenu.
De plus, je ne vois pas l'intérêt de faire un suffle() sur la liste des caractères autorisés si tu fait un array_rand() derrière :?
Tout ceci pour dire qu'il faut prendre garde, un code peut paraitre abstrait, mais il répond à une logique, celle du développeur, et qu'avant de la critiquer, il faut la comprendre, pour savoir s'il est dans le droit chemin ou non ;)
J'avais lu (au passage, livre très bien pour débuter et très peu onéreux) qu'il vaut mieux initialiser les variables avant pour des raisons de sécurité. Pour le shuffle, je suis tout à fait d'accord avec toi, il n'est pas nécessaire. J'ai hésité à le mettre. Je me suis dit que ça mangeait pas de pain et que la lettre sélectionnée serait prise avec un hasard plus grand (ce que fait microtime d'ailleurs si je ne m'abuse). Également, j'ai préféré la compréhension à l'optimisation pour king kong. :)

J'avoue que mon jugement est un peu dur. Mais bon, Il y a de grandes chances que le code HTML soit invalide et qu'il va à l'encontre des bonnes pratiques (styles en ligne, éléments écrient en majuscule, etc.). J'ai l'impression que c'est un vieux code adapté et réadapté et réadapté et etc.

Logiquement, les variables $max_size, $width_max, $height_max devraient être des constantes. Car ce sont des valeurs fixes et non modifiables. Également, $extension, $extension1, $extension2 ne sont pas nécessaire puisqu'en utilisant getimagesize() on a les infos qu'il faut. Sinon, je pense qu'il aurait été plus judicieux de réunir le tout dans un array :
$fichier_image_autorise = array("gif","jpg","jpeg");
En tout cas merci pour tes précisions. :)
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphant du PHP | 453 Messages

06 janv. 2010, 18:43

setlocale(LC_TIME, 'fr_FR',"french");
$time6 = strftime("%d-%m-%Y-%H-%M-%S");
$time8 = strftime("%A %d %B"); 
$time9 = strftime("%H:%M");
Oups, j'ai oublié qu'il vaut mieux spécifier la zone horaire pour que le code soit valide totalement (E_STRICT) :
date_default_timezone_set("Europe/Paris");
setlocale(LC_TIME, 'fr_FR',"french");
$time6 = strftime("%d-%m-%Y-%H-%M-%S");
$time8 = strftime("%A %d %B"); 
$time9 = strftime("%H:%M");
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 janv. 2010, 18:50

Re ;)
Ce qui n'est pas grave en soit puisque ça ne change pas à l'exécution du programme et que cela veut tout simplement dire que c'est un avertissement, n'est ce pas ? Je crois qu'un avertissement dans un script peut générer un comportement bizarre plus loin. Quand on peut éviter, ce n'est que mieux.
S'il y avait, il n'y a plus de notice sur cette syntaxe.
Je l'utilise fréquemment, avec le error_reporting à E_ALL, et je n'ai pas remarqué de notice :?
Bien que ta correction soit juste, je ne vois pas en quoi son code "ne risque pas de fonctionner correctement".
Ah oui pardon. J'avais fait surement une manip/instruction qui plantait le programme. Là en le relisant l'original, je me suis trompé à propos de ces lignes (modulo). Ce code génèrera de tout manière une erreur de type notice puisque la variable $pass n'est pas initialisée (cf. ton/ta intervention/réponse plus bas).
Je préciserais plus tard, ma réponse, mais dans le cas présent, tu as parfaitement raison. Faire un .= revient à utiliser le contenu de la variable $pass, et comme elle n'est pas initialisé, il y aura warning.
J'avais lu (au passage, livre très bien pour débuter et très peu onéreux) qu'il vaut mieux initialiser les variables avant pour des raisons de sécurité. Pour le shuffle, je suis tout à fait d'accord avec toi, il n'est pas nécessaire. J'ai hésité à le mettre. Je me suis dit que ça mangeait pas de pain et que la lettre sélectionnée serait prise avec un hasard plus grand (ce que fait microtime d'ailleurs si je ne m'abuse). Également, j'ai préféré la compréhension à l'optimisation pour king kong. :)
Quand tu utilises cette variable comme $pass dans le code de base, effectivement, c'est une très bonne idée.
Toutefois, lorsque tu initialises, puis que tu la remplis, comme tu le fais, je pense sincèrement que l'initialisation est superflue.
C'est l'un des avantages-inconvénients de PHP, sur sa permissivité.

Voilà ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 5462 Messages

06 janv. 2010, 18:59

pour l'extension c'est mieux d'utiliser le MIME
J'avais lu (au passage, livre très bien pour débuter et très peu onéreux) qu'il vaut mieux initialiser les variables avant pour des raisons de sécurité
avant oui maintenant non (mais peu etre), surout avec les register global. la ca va plus pompé de la memoire qu'autre chose, un coup de debug_zval_dump pour voir que c'est instancié 2 fois :wink: