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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Nolem, La fonction GET n'a pas de secret pour toi ?

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

par stealth35 » 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:

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

par zeus » 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à ;)

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

par niuxe » 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");

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

par niuxe » 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. :)

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

par thekingkong » 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:

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

par zeus » 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 ;)

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

par stealth35 » 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é

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

par niuxe » 06 janv. 2010, 05:09

Hello,
ca sert a quoi ton code ?, (y'a beaucoup de blabla)
+1
comme dis Nolem l'attibut action est obligatoire dans form, lorsque qu'il est vide il ne prend pas la valeur de PHP_SELF, mais l'adresse en cour (qui peu etre differente, rewiting par exemple), et action attendant un type de chaine URI et une URI vide n'est pas une URI valide
+1 Je n'avais pas du tout pensé à cela.

C'est du n'importe quoi ce code. Il y a à boire et à manger. Au moins on crèvera pas de faim et de soif... :fete: (pseudo compteur de visite, pseudo générateur de mot de passe, pseudo envoi de mail, etc.)

Pour commencer à ajouter au début :
$_POST = array_walk($_POST,"htmlspecialchars"); 
$region = $_POST['region'];
$departement = $_POST['departement'];
$categorie = $_POST['categorie'];
//etc.
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.
$tabRegion = array(
1=>'Alsace',
2=>'Aquitaine',
3=>'Auvergne',
4=>'Basse Normandie',
5=>'Bourgogne',
6=>'Bretagne',
7=>'Centre',
8=>'Champagne-Ardenne',
9=>'Corse',
10=>'Franche-Comte',
11=>'Haute-Normandie',
12=>'Ile-de-France',
13=>'Languedoc-Roussillon',
14=>'Limousin',
15=>'Lorraine',
16=>'Midi-Pyrenees',
17=>'Nord-Pas-de-Calais',
18=>'Pays-de-la-Loire',
19=>'Picardie',
20=>'Poitou-Charentes',
21=>'Provence-Alpes-Cote-d-Azur',
22=>'Rhone-Alpes');
En ce qui concerne les dates, là encore c'est...
setlocale(LC_TIME, 'fr_FR',"french");
$time6 = strftime("%d-%m-%Y-%H-%M-%S");
$time8 = strftime("%A %d %B"); 
$time9 = strftime("%H:%M");
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];
}

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

par stealth35 » 05 janv. 2010, 16:08

commence par faire le schema de ta base de donnée prend un outils comme MySQL Workbench par exemple,
http://www.mysql.fr/products/workbench/

apres ca ira tout seul, sinon question t'as quelle version de PHP ?

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

par thekingkong » 05 janv. 2010, 16:05

e base de données pour creer tes pages a la volé, et non pas les creer direct sur le serveur
imagine que demain tes envie de modifié le style de tes pages tu va devoir tout retaper a la main,
en plus pas moyen de modifier l'annonce ni de la supprimer.
T'es un petit malin toi :mrgreen:

Allé je vais essayer de le faire moi même avec votre aide bien sur :twisted: Mouahahahaha.

Merci :D :langue: De toute façon je n'allais pas le continuer :^o .

Mais bon pour les borné qui pour eux peut importe le problème car il existe bien bah bonne chance ^^.

Salut, merci a toute l'équipe :p ( Même les inter-mitant du spectacle ) non je blaque.
ciao

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

par stealth35 » 05 janv. 2010, 15:27

thekingkong > c'est vraiment horrible ton fichier :mrgreen:
bien que la logique du système soit correct, le reste est pas la,
pour bien faire ton truc, il va te falloir une base de données pour creer tes pages a la volé, et non pas les creer direct sur le serveur
imagine que demain t'es envie de modifier le style de tes pages tu vas devoir tout te retaper a la main,
en plus pas moyen de modifier l'annonce ni de la supprimer.

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

par thekingkong » 05 janv. 2010, 15:22

Et si on le refaçonner tout simplement tous ensemble et évaluer durent le travaille les méthode de chacun comme sa on pourrait corriger l'autre avec des arguments. :D Allé après tout, c'est qu'un simple moteur de recherche qui recherche les mot écrit que ce soit dans une base de donnée ou dans un fichier. :lol:

et comme sa moi j'ai la fin de ce casse-tête interminable :twisted: Mouahahahahahahahahahahahaaa siyouplé ! :priere:

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

par stealth35 » 05 janv. 2010, 14:48

comme dis Nolem l'attibut action est obligatoire dans form, lorsque qu'il est vide il ne prend pas la valeur de PHP_SELF, mais l'adresse en cour (qui peu etre differente, rewiting par exemple), et action attendant un type de chaine URI et une URI vide n'est pas une URI valide

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

par niuxe » 05 janv. 2010, 13:48

Mais si!!!
Ton script veut afficher des variables qui n'existent pas, si je ne me trompe pas, à l'envoi de ton formulaire tu dois avoir un message d'erreur disant que les index sont indéfinis, donc tu n'as qu'à remplacer les $_GET comme on t'as dit.
Ensuite pour répondre à Nolem( #-o ; je cherche pas la bagarre), action dans le form n'est pas réellement obligatoire, si on ne le met pas, ça a le même effet que $_SERVER['PHP_SELF'].
Comme je te l'ai dit par MP la bagarre est close et on est copaing. :) Cependant, je me permets de t'indiquer que tu dis une sottise. Bien qu'en supprimant l'attribut « action », tu auras le résultat escompté, ton code sera faux puisque l'élément form attend obligatoirement 2 attributs (method et action) les autres étant optionnels. Un code faux en HTML peut avoir des incidences à plusieurs endroits (affichage et comportement imprévu). Également, supprimer l'attribut action est une mauvaise idée puisqu'il est possible par cet intermédiaire de « pirater » en injectant des balises nocives ou instruction JS. C'est la raison pour laquelle, j'ai rajouté la fonction htmlspecialchars avec $_SERVER... qui limite largement le petit hacker du dimanche et autres trolls sauvages.

À noter que ceci (syntaxe moins élégante) :
<form method="get" action="#"> <!-- etc. -->
aura le même effet que $_SERVER ...
Sa a l'air d'aller mieux pour ne pas dire que vous êtes des petit génie ^^. Halala le duel commence Jojo vs Nolem la quête du meilleur codeur :p ( merci a vous :d )[...]En tout cas, Chapeau bas, j'admire t'es connaissance ( au moins tu ne dépend de personne comme sa, et encore moins des escrocs :wink: ) bonne journée nolem, a ... :?: a peut être ce soir si tu te connecte. :D
Je ne prétends pas être le super codeur fou. Un forum permet d'échanger notre humble savoir et c'est très enrichissant de discuter plusieurs points de vue sur un sujet. Ça m'arrive de sortir de belles et magnifiques bêtises... :oops: Ce qui me fait rebondire sur : C'est en forgeant qu'on devient forgeron... :langue:

En ce qui concerne ton soucis, je vais essayer de te déboguer ça dans l'après midi, si j'ai un peu de temps devant moi.

Peux tu s'il te plait rééditer ton message afin de marquer les différents noms de tes fichiers. Sinon je vais essayer sans puisqu'il y a apparemment le script complet.

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

par thekingkong » 05 janv. 2010, 12:43

Bonjour:
un script de petite annonce

Il sert a crée l'annonce que l'utilisateur vient d'ajouté :)
salut