[HTML/PHP] question "normes de codage"

question "normes de codage" [HTML/PHP] - PHP - Programmation

Marsh Posté le 20-03-2008 à 16:22:43    

Salut
 
Je cherche des exemples sur le net, et souvent, je vois des trucs comme ca :  
 

Code :
  1. $Fname = $_POST["Fname"];
  2. $Lname = $_POST["Lname"];
  3. $gender = $_POST["gender"];


 
et ensuite dans le code on va utliser $Fname, $Lname, $gender
 
Pourquoi ne pas utliser directement les $_POST au cours du code ?
 
- est-ce juste pour pouvoir taper + vite ?
- est-ce parceque c'est "mal" d'interroger trop $_POST ?
 ou bien ya une autre raison ??
 
Merci d'avance

Reply

Marsh Posté le 20-03-2008 à 16:22:43   

Reply

Marsh Posté le 20-03-2008 à 16:46:13    

Salut, ayant débuté l'apprentissage du php depuis peu je me pose exactement la même question :)  
 
J'imagine également que "travailler" directement sur les variables globales telles que $_POST n'est pas le mieux à faire.

Reply

Marsh Posté le 20-03-2008 à 17:09:45    

Perso je le fais entre autres pour les raisons suivantes :
 
 
- Rendre mon code générique pour pouvoir le réutiliser avec différentes sources de données (je pourrais tout aussi bien récupérer mon $gender d'une base de données ou d'un fichier texte).
 
- Je ne fais généralement pas confiance aux saisies utilisateur, donc je les affecte à une variable et si nécessaire je leur applique des traitements préalables. Donc autant toutes les récupérer d'un coup, puis faire ces traitements.
 
- Je ne fais mes traitements qu'une fois, et pas à chaque fois que je veux utiliser la variable.

Reply

Marsh Posté le 20-03-2008 à 18:45:01    

Il y a une règle d'or en informatique : "Never trust the user input".
 
En gros, $_POST contient des données utilisateur qu'il est préférable de traiter avant utilisation. On peut ainsi s'assurer que les données réceptionnées ne contiennent aucun code malveillant, aucun caractère susceptible de faire tout planter (les fameuses quotes)...etc.

Message cité 1 fois
Message édité par CyberDenix le 20-03-2008 à 20:55:55

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 20-03-2008 à 20:22:03    

en plus de tout ça, si tu utilise directeùent $_POST dans ton code, que tu l'itilise 36 fois sur la meme page, et un jour tu decide que le champs fname devient first_name, tu fais comment ?! tu te tape la modif 36 fois au lieux d'une et c'est mal :D

Reply

Marsh Posté le 20-03-2008 à 20:31:36    

Ceci dit, si c'est pour faire
 
$foo = $_POST['foo'];
 
l'argument de la sécurité ne tient pas!
 
Les pages qui commencent par une répétition de ce qui précède pour chacun des champs, c'est vraiment pas terrible!
 
Hint : en PHP, il existe des variables dynamiques...


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 20-03-2008 à 20:33:17    

CyberDenix a écrit :

Il y a une règle d'or en informatique : "Never trust the user input".
 
En gros, $_POST contient des données utilisateur qu'il est préférable de traiter avant utilisation. On peut ainsi s'assurer que les données réceptionnées ne contiennent aucun code malveillant, aucun caractère suceptible de faire tout planter (les fameuses quotes)...etc.


 

naeh a écrit :

en plus de tout ça, si tu utilise directeùent $_POST dans ton code, que tu l'itilise 36 fois sur la meme page, et un jour tu decide que le champs fname devient first_name, tu fais comment ?! tu te tape la modif 36 fois au lieux d'une et c'est mal :D


ouaip c est un melange des deux
les données de $post DOIVENT etre traitees avant d etre exploitees dans le script sinon danger (xss toussa)
et en effet ca optimise ton script pour la maintenance en dehors d interroger le tableau global a chaque appel  


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 20-03-2008 à 20:57:55    

sircam a écrit :

Ceci dit, si c'est pour faire
 
$foo = $_POST['foo'];


 
D'ailleurs ça me fait penser :

Code :
  1. $foo = $_POST['foo'];  // simple quotes
  2.  
  3. $bar = 'foo';
  4. $foo = $_POST["$bar"]; // double quotes pour interpréter $bar

Message cité 1 fois
Message édité par CyberDenix le 20-03-2008 à 21:00:16

---------------
Directeur Technique (CTO)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed