par
Ryle » 11 août 2006, 10:21
Il y a un problème de visibilité de tes variables dans ta fonction verif().
En effet, une variable définie en dehors d'une fonction n'est accessible par celle-ci qu'à condition d'avoir été déclarée explicitement comme globale (ou qu'elle soit super-globale comme $_POST, $_GET, etc.)
Ainsi pour utiliser $dbconnect qui est je suppose définie dans param.inc.php, il te faut ajouter dans ta fonction la ligne de déclaration suivante :
function verif(...) {
global $dbconnect;
if( isset($dbconnect) )
...
}
Une bonne habitude également à prendre lorsque tu fais un mysql_query() c'est d'ajouter un "or die" ensuite, en cas d'erreur mysql. En effet, php ne sait pas si la requête sql est correcte ou non, il se contente de l'exécuter. Du coup il vaut mieux prendre l'habitude d'ajouter :
$result = mysql_query($sql , $link) or die (mysql_error());
Ainsi si la syntaxe sql n'est pas bonne tu le vois tout de suite
Enfin, tu fais appel en dehors de ta fonction à $data['droit'] :
if( verif($login , $mdp) == $data['droit'] )
{
session_regenerate_id();
$_SESSION['droit'] = $data['droit'];
}
Est ce que cette variable est bien définie ici ? (est ce qu'elle existe dans ton param.inc.php ?)
Bon y a peut être d'autres petites bricoles à corriger, mais ceci devrait déjà te permettre d'avancer un peu
Edit : et puis tant qu'on y est, un p'tit conseil pour ta table d'utilisateur : il vaut mieux utiliser un nombre en auto-incrément pour ta clé primaire. En effet, cela t'assure d'avoir un identifiant unique et qui ne sera jamais modifié (alors qu'un email peut changer).
Par ailleurs quand tu auras besoin de lier cette table à d'autre, tu seras obligé d'utiliser l'émail pour faire le lien, et si celui-ci change, faut que tu ailles le changer partout. Avec un identifiant spécifique, tu n'aurais pas à te soucier de ça, le lien sera toujours correct

Il y a un problème de visibilité de tes variables dans ta fonction verif().
En effet, une variable définie en dehors d'une fonction n'est accessible par celle-ci qu'à condition d'avoir été déclarée explicitement comme globale (ou qu'elle soit super-globale comme $_POST, $_GET, etc.)
Ainsi pour utiliser $dbconnect qui est je suppose définie dans param.inc.php, il te faut ajouter dans ta fonction la ligne de déclaration suivante :
[php]function verif(...) {
global $dbconnect;
if( isset($dbconnect) )
...
}[/php]
Une bonne habitude également à prendre lorsque tu fais un mysql_query() c'est d'ajouter un "or die" ensuite, en cas d'erreur mysql. En effet, php ne sait pas si la requête sql est correcte ou non, il se contente de l'exécuter. Du coup il vaut mieux prendre l'habitude d'ajouter :
[php]$result = mysql_query($sql , $link) or die (mysql_error());[/php]
Ainsi si la syntaxe sql n'est pas bonne tu le vois tout de suite :)
Enfin, tu fais appel en dehors de ta fonction à $data['droit'] :
[php]if( verif($login , $mdp) == $data['droit'] )
{
session_regenerate_id();
$_SESSION['droit'] = $data['droit'];
} [/php]
Est ce que cette variable est bien définie ici ? (est ce qu'elle existe dans ton param.inc.php ?)
Bon y a peut être d'autres petites bricoles à corriger, mais ceci devrait déjà te permettre d'avancer un peu :)
Edit : et puis tant qu'on y est, un p'tit conseil pour ta table d'utilisateur : il vaut mieux utiliser un nombre en auto-incrément pour ta clé primaire. En effet, cela t'assure d'avoir un identifiant unique et qui ne sera jamais modifié (alors qu'un email peut changer).
Par ailleurs quand tu auras besoin de lier cette table à d'autre, tu seras obligé d'utiliser l'émail pour faire le lien, et si celui-ci change, faut que tu ailles le changer partout. Avec un identifiant spécifique, tu n'aurais pas à te soucier de ça, le lien sera toujours correct ;)