21-05-2010, 11:12 PM
(Modification du message : 22-05-2010, 09:19 AM par Sephi-Chan.)
Hm… C'est goret comme code… Mais comme je ne suis pas que méchant, je vais expliquer ce qui ne va pas.
Déjà, tu n'es pas homogène : parfois tu mets des espaces, parfois non, tu sautes des lignes là où t'en as envie, etc.
Si tu veux améliorer la qualité de ton code, tu peux utiliser des requêtes préparées avec des placeholder (des ? qui sont ensuites remplacés par des valeurs) ou la fonction sprintf(). Exemple :
Sephi-Chan, qui scinde le sujet…
Déjà, tu n'es pas homogène : parfois tu mets des espaces, parfois non, tu sautes des lignes là où t'en as envie, etc.
$data = $db->fetch('SELECT id, pseudo, password, block FROM `'.$config['db_prefix'].'user` WHERE pseudo=\''.$_POST['pseudo'].'\'');
Déjà ça commence mal : la requête est illisible avec les points, les slash, etc. Ensuite, tu utilises un paramètre sans la protéger. Risque d'injection SQL.Si tu veux améliorer la qualité de ton code, tu peux utiliser des requêtes préparées avec des placeholder (des ? qui sont ensuites remplacés par des valeurs) ou la fonction sprintf(). Exemple :
$query = sprintf(
"SELECT id, pseudo, password, block FROM %s.users WHERE pseudo = '%s';",
$config['db_prefix'],
$_POST['pseudo']
);
Ce n'est toujours pas sécurisé, mais au moins c'est lisible.
$db->update(array('sid' => $ssid, 'lastvisit'=>$currentdate, 'lastip'=>$_SERVER["REMOTE_ADDR"]), $config['db_prefix'].'user', 'id="'.$id.'"');
En SQL, seules les chaînes (et donc les dates) sont encadrés de guillemets simples (et pas double), pas les nombres. Donc :
$db->update(
array(
'sid' => $ssid,
'lastvisit' => $currentdate,
'lastip' => $_SERVER["REMOTE_ADDR"]
),
sprintf("%s.users", $config['db_prefix']),
sprintf("id=%d", $id)
);
Sephi-Chan, qui scinde le sujet…