06-03-2009, 02:52 AM
Je suis d'accord avec les remarques faites ci-dessus. J'ajoute 3 observations:
- il est conseillé de faire des fonctions pour se connecter et exécuter les requêtes avec gestion d'erreur de manière à ne pas récrire la même chose de nombreuses fois dans un développement.
A titre de suggestion :
/**
* Etablit une connexion avec le serveur MySQL
* Un message est affiché en cas d'erreur
*
* @param constante $serveur
* @param constante $base
* @param constante $utilisateur
* @param constante $mot_de_passe
*
* @return int Identifiant de connexion
*
*/
function connexion($serveur, $base, $utilisateur, $mot_de_passe)
{
$c = mysql_connect($serveur, $utilisateur, $mot_de_passe);
if (!$c) {
echo "Probleme de connexion avec le serveur\n";
exit;
}
if (!mysql_select_db ($base, $c)) {
echo "Acces a la base impossible\n";
echo "Message de Mysql : " . mysql_error($c);
exit;
}
return($c);
}
/**
* Execute une requete SQL et renvoie un identifiant de resultat
*
* Un message est affiché en cas d'erreur
*
* @param string $requete Requete SQL a executer
* @param int $connexion Identifiant de connection
*
* @return int identifiant de résultat
*
*/
function exerequete($requete, $connexion)
{
$resultat = @mysql_query($requete, $connexion);
if ($resultat) {
return $resultat;
} else {
echo "probleme d'exécution de la requete <BR>";
echo "Message d'erreur de la base : " . mysql_error($connexion);
}
}
A compléter en fonction du projet.
2. Il est conseillé de crypter les mots de passe dans la base pour des raisons de sécurité. Si quelqu'un parvient à lire la base il ne peut se faire passer pour un utilisateur. Si on utilise sha1, on compare le sha1 calculé du mot de passe saisi au sha1 enregistré du mot de passe. C'est parce que beaucoup sites utilisent cette méthode qu'ils ne peuvent renvoyer un mot de passe perdu mais seulement proposer un nouveau mot de passe...
3. C'est une bonne idée de mettre en session l'identifiant unique de l'utilisateur et cet identifiant seulement (jamais le mot de passe). Dans certains cas, si l'on a besoin d'informations sur l'utilisateur sur plusieurs pages. Il peut être judicieux de mettre en session un tableau contenant toutes ces informations afin d'éviter de nombreuses requêtes. Pour ma part, j'utilise plutôt un objet mais bon...
Amicalement,
Sylvain.
- il est conseillé de faire des fonctions pour se connecter et exécuter les requêtes avec gestion d'erreur de manière à ne pas récrire la même chose de nombreuses fois dans un développement.
A titre de suggestion :
/**
* Etablit une connexion avec le serveur MySQL
* Un message est affiché en cas d'erreur
*
* @param constante $serveur
* @param constante $base
* @param constante $utilisateur
* @param constante $mot_de_passe
*
* @return int Identifiant de connexion
*
*/
function connexion($serveur, $base, $utilisateur, $mot_de_passe)
{
$c = mysql_connect($serveur, $utilisateur, $mot_de_passe);
if (!$c) {
echo "Probleme de connexion avec le serveur\n";
exit;
}
if (!mysql_select_db ($base, $c)) {
echo "Acces a la base impossible\n";
echo "Message de Mysql : " . mysql_error($c);
exit;
}
return($c);
}
/**
* Execute une requete SQL et renvoie un identifiant de resultat
*
* Un message est affiché en cas d'erreur
*
* @param string $requete Requete SQL a executer
* @param int $connexion Identifiant de connection
*
* @return int identifiant de résultat
*
*/
function exerequete($requete, $connexion)
{
$resultat = @mysql_query($requete, $connexion);
if ($resultat) {
return $resultat;
} else {
echo "probleme d'exécution de la requete <BR>";
echo "Message d'erreur de la base : " . mysql_error($connexion);
}
}
A compléter en fonction du projet.
2. Il est conseillé de crypter les mots de passe dans la base pour des raisons de sécurité. Si quelqu'un parvient à lire la base il ne peut se faire passer pour un utilisateur. Si on utilise sha1, on compare le sha1 calculé du mot de passe saisi au sha1 enregistré du mot de passe. C'est parce que beaucoup sites utilisent cette méthode qu'ils ne peuvent renvoyer un mot de passe perdu mais seulement proposer un nouveau mot de passe...
3. C'est une bonne idée de mettre en session l'identifiant unique de l'utilisateur et cet identifiant seulement (jamais le mot de passe). Dans certains cas, si l'on a besoin d'informations sur l'utilisateur sur plusieurs pages. Il peut être judicieux de mettre en session un tableau contenant toutes ces informations afin d'éviter de nombreuses requêtes. Pour ma part, j'utilise plutôt un objet mais bon...
Amicalement,
Sylvain.