Mammouth du PHP |
985 Messages
27 oct. 2009, 14:15
Moi pour cela je décomposerais : (c'est plus lisible)
//on passe au condition : je considère que id et id_mem sont des integers
if (is_integer($id) && is_integer($id_mem))
{
mysql_query($requete);
}
Ok pour cela, mais dans ce cas: inutile d'utiliser
mysql_real_escape_string():
(et quitte a sortir les variables de cette manière -> autant faire un test isset)
$id = mysql_real_escape_string($id); //histoire de ne pas l'oublier
$id_rem = mysql_real_escape_string($id_rem);
Et inutile, aussi, d'entourer les variables avec des guillemets:
VALUES('$id','$id_rem')"; //ta requete ainsi est plus lisible
Et cela sera encore beaucoup plus lisible: (Ce que j'expliquais plus tôt dans ce Topic)...
Sauf que ici, rien ne prouve que
$id et
$id_rem sont des
Int,
$id peut très bien être simplement le pseudo...
Donc, ceci est plus logique et de toute manière pas moins sécurisé:
(ctype_alnum ne répondra true que si la variable est une chaine...)
$id_rem = (isset($id_rem)) ? mysql_real_escape_string($id_rem) : null;
$id = (isset($id)) ? mysql_real_escape_string($id) : null;
$sql = 'INSERT INTO `ref`(id_m, id_rem) VALUES(' . "'" . $id . "', '" . $id_rem . "')";
if(ctype_alnum($id) && ctype_alnum($id_rem)) {
mysql_query($sql);
}
et:
$ref_code = (isset($ref_code)) ? mysql_real_escape_string($ref_code) : null;
$id = (isset($id)) ? mysql_real_escape_string($id) : null;
$sql = 'UPDATE `membres` SET ref_code = ' . "'" . $ref_code . "'" . ' WHERE id_membres = ' . "'" . $id . "'";
if(ctype_alnum($ref_code) && ctype_alnum($id)) {
mysql_query($sql);
}
L'important surtout, je croies, pour l'auteur du Topic est de comprendre pourquoi utiliser telle ou telle fonction et/ou telle ou telle syntaxe...
Ps: on pourrait chipoter en enlevant
mysql_real_escape_string() quand on utilise
ctype_alnum() mais par habitude je n'utilise pas
mysql_real_escape_string() seulement quand la variable contient un entier...
C'est plus simple et on évite certains bugs possibles...
Ps2, au sujet de mysql_real_escape_string(): (pour info)
La connexion MySQL. S'il n'est pas spécifié, la dernière connexion ouverte avec la fonction mysql_connect() sera utilisée. Si une telle connexion n'est pas trouvée, la fonction tentera d'ouvrir une connexion, comme si la fonction mysql_connect() avait été appelée sans argument. Si aucune connexion n'est trouvée ou établie, une alerte E_WARNING est générée.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.