SIMULATION DE LOGIN

Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
- - Dernière réponse : kankrelune
Messages postés
1305
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015
- 10 janv. 2007 à 15:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41041-simulation-de-login

Afficher la suite 
kankrelune
Messages postés
1305
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015
-
"# if(isset($_POST['Inom'])) $Inom=$_POST['Inom'];
# else $Inom="";

Je traduit ça sur une seul ligne (bien que sa soit plus lent):
$Inom = isset($_POST['Inom']) ? $_POST['Inom'] : null;"

Pas d'accord... chacun fait comme il l'entend le premier exemple est valable et plus rapide qui plus est... .. .

Pour le reste comme d'hab... ATTENTION AU SQL INJECTIONS !!! .. .

Il faut utiliser mysql_real_escape_string() sur le variable servant aux requêtes

http://fr.php.net/manual/fr/function.mysql-real-escape-string.php

Sauf si c'est un int... à ce moment là...

'SELECT ... .. . WHERE id='.(int)$maVariable

Par contre htmlspecialchars(), htmlentities() ou strip_tags() sont inutile pour les requetes SQL... MySQL n'est pas sensible au html... c'est pour l'affichage qu'il faut s'en servir... pour empecher les failles XSS... par exemple quand tu fais "félécitation blabla vous êtes enregistrés"... .. .

Vérifier les retour de mysql comme le dit juki_webmaster

if(empty($user_name)) { echo 'Attention !!! User name manquant'; exit();}
elseif (empty($password)){echo'Attention !!! Mot de passe manquant';exit();}
else
{
. .. ... code ... .. .
}

Tes exit(); ne servent pas à grand chose (et c'est crade en plus) ou alors c'est ton else {} qui sert à rien... soit tu fais...

if(empty($user_name))
exit('Attention !!! User name manquant');
elseif(empty($password))
exit('Attention !!! Mot de passe manquant');

. .. ... code ... .. .

soit tu fais

if(empty($user_name))
echo 'Attention !!! User name manquant';
elseif(empty($password))
echo'Attention !!! Mot de passe manquant';
else
{
. .. ... code ... .. .
}

C'est plus logique... .. .

dans le même esprit pourquoi séparer la page de traitement du formulaire... ça peut être utile dans certains cas (exemple post sur un forum pour éviter les doublons par réactualisation de la page) mais pour ce code c'est inutile et ça augmente le nombre de fichiers pour rien... .. .

Voili voilou

@ tchaOo°
cs_devlo
Messages postés
6
Date d'inscription
vendredi 7 octobre 2005
Statut
Membre
Dernière intervention
3 janvier 2008
-
Oula je devrais relire ce que jecris avant de poster.....
La remarque de JUKI est tout à fait justifiée
juki_webmaster
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3 -
Non non tu verifie bien $resultat avant $tab= mysql_fetch_array($req3);, car là si ton $resultat vaut <= 0, ça sera pas tres jolie :)

# $resultat = mysql_num_rows($req3);
#
#
# $tab= mysql_fetch_array($req3);

if (mysql_num_rows($req3) <= 0) { // ou !== (int)1 si ont prefere :)
// Rien
} else {
$tab = mysql_fetch_array($req3);
}
nightlord666
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
5 -
Je pense qu'il voulait plutôt dire de vérifier $req3, et pas $resultat...

Sinon, je suis totalement d'accord, ce code est vraiment très peu réutilisable, et on dirait plus un exercice personnel qu'un code pouvant être partagé avec les autres.
cs_devlo
Messages postés
6
Date d'inscription
vendredi 7 octobre 2005
Statut
Membre
Dernière intervention
3 janvier 2008
-
//$resultat = mysql_num_rows($req3);
//Tu ne verifit pas si $resultat vaut quelque chose avant mysql_fetch_array()

Quelle est l'utilité de vérifier au préalable si $resultat 'vaut quelque chose'

Moi j'ai toujours effectué un test sur le nombre de lignes retournées avec mysql_num_rows
puis si > 0 alors affectation du résultat à une variable avec mysql_fetch_array

Mais je suis peut être dans l'erreur... ?