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é
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édenteLe 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]
Bien que ta correction soit juste, je ne vois pas en quoi son code "ne risque pas de fonctionner correctement".Pour que ton générateur de mot de passe fonctionne remplacer :par :$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 }/* 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]; }
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.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
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).Bien que ta correction soit juste, je ne vois pas en quoi son code "ne risque pas de fonctionner correctement".
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.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
$fichier_image_autorise = array("gif","jpg","jpeg");
En tout cas merci pour tes précisions. Oups, j'ai oublié qu'il vaut mieux spécifier la zone horaire pour que le code soit valide totalement (E_STRICT) :setlocale(LC_TIME, 'fr_FR',"french"); $time6 = strftime("%d-%m-%Y-%H-%M-%S"); $time8 = strftime("%A %d %B"); $time9 = strftime("%H:%M");
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");
S'il y avait, il n'y a plus de notice sur cette syntaxe.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.
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.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).Bien que ta correction soit juste, je ne vois pas en quoi son code "ne risque pas de fonctionner correctement".
Quand tu utilises cette variable comme $pass dans le code de base, effectivement, c'est une très bonne idée.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.
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 foisJ'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é