Problème page de connexion PHP/MySql
danthom
Messages postés
1
Statut
Membre
-
jeremy.s Messages postés 1248 Statut Membre -
jeremy.s Messages postés 1248 Statut Membre -
J'ai un souci avec ma page de connexion en php. Je voudrais que l'utilisateur se connecte avec son identifiant se trouvant dans une BDD MySQL et soit ensuite redirigé vers la page sécurisée.
Quand je tente une connexion, je n'arrive pas à me connecter à ma page STATUS.PHP.
L'écran revient toujours sur la page de connexion.
Voici le contenu de ma page.
Pourriez-vous m'aider ?
<?php
// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE["ID_UTILISATEUR"]))
{
header("Location: ../dev/private/status.php");
}
else
{
// Formulaire visible par défaut
$masquer_formulaire = false;
// Une fois le formulaire envoyé
if(isset($_POST["BT_Envoyer"]))
{
// Vérification de la validité des champs
if(!ereg("^[A-Za-z0-9_]{4,20}$", $_POST["TB_Nom_Utilisateur"]))
{
$message = "Votre nom d'utilisateur doit comporter entre 4 et 20 caractères<br />\n";
$message .= "L'utilisation de l'underscore est autorisée";
}
elseif(!ereg("^[A-Za-z0-9]{6,}$", $_POST["TB_Mot_de_Passe"]))
{
$message = "Votre mot de passe doit comporter au moins 6 caractères";
}
else
{
// Connexion à la base de données
// Valeurs à modifier selon vos paramètres configuration
mysql_connect("localhost", "root", "password");
mysql_select_db("database");
// Sélection de l'utilisateur concerné
$result = mysql_query("
SELECT ID_Utilisateur, Nom_Utilisateur, Mot_de_Passe, Compte_Active
FROM Users
WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
");
// Si une erreur survient
if(!$result)
{
$message = "Une erreur est survenue lors de la tentative de connexion";
}
else
{
// Si aucun utilisateur n'a été trouvé
if(mysql_num_rows($result) == 0)
{
$message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"] . " n'existe pas";
}
else
{
// Récupération des données
$row = mysql_fetch_array($result);
// Si le compte n'a pas été activé
if($row["Compte_Active"] == 0)
{
$message = "Votre compte utilisateur n'a pas été activé";
}
else
{
// Vérification du mot de passe
if(md5($_POST["TB_Mot_de_Passe"]) != $row["Mot_de_Passe"])
{
$message = "Votre mot de passe est incorrect";
}
else
{
// Définition du temps d'expiration des cookies
$expiration =
empty($_POST["CB_Connexion_Automatique"]) ? 0 : time() + 90 * 24 * 60 * 60;
// Création des cookies
setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
// Redirection de l'utilisateur
header("Location: /dev/private/status.php");
}
}
}
}
// Fermeture de la connexion à la base de données
mysql_close();
}
}
}
?>
Quand je tente une connexion, je n'arrive pas à me connecter à ma page STATUS.PHP.
L'écran revient toujours sur la page de connexion.
Voici le contenu de ma page.
Pourriez-vous m'aider ?
<?php
// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE["ID_UTILISATEUR"]))
{
header("Location: ../dev/private/status.php");
}
else
{
// Formulaire visible par défaut
$masquer_formulaire = false;
// Une fois le formulaire envoyé
if(isset($_POST["BT_Envoyer"]))
{
// Vérification de la validité des champs
if(!ereg("^[A-Za-z0-9_]{4,20}$", $_POST["TB_Nom_Utilisateur"]))
{
$message = "Votre nom d'utilisateur doit comporter entre 4 et 20 caractères<br />\n";
$message .= "L'utilisation de l'underscore est autorisée";
}
elseif(!ereg("^[A-Za-z0-9]{6,}$", $_POST["TB_Mot_de_Passe"]))
{
$message = "Votre mot de passe doit comporter au moins 6 caractères";
}
else
{
// Connexion à la base de données
// Valeurs à modifier selon vos paramètres configuration
mysql_connect("localhost", "root", "password");
mysql_select_db("database");
// Sélection de l'utilisateur concerné
$result = mysql_query("
SELECT ID_Utilisateur, Nom_Utilisateur, Mot_de_Passe, Compte_Active
FROM Users
WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
");
// Si une erreur survient
if(!$result)
{
$message = "Une erreur est survenue lors de la tentative de connexion";
}
else
{
// Si aucun utilisateur n'a été trouvé
if(mysql_num_rows($result) == 0)
{
$message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"] . " n'existe pas";
}
else
{
// Récupération des données
$row = mysql_fetch_array($result);
// Si le compte n'a pas été activé
if($row["Compte_Active"] == 0)
{
$message = "Votre compte utilisateur n'a pas été activé";
}
else
{
// Vérification du mot de passe
if(md5($_POST["TB_Mot_de_Passe"]) != $row["Mot_de_Passe"])
{
$message = "Votre mot de passe est incorrect";
}
else
{
// Définition du temps d'expiration des cookies
$expiration =
empty($_POST["CB_Connexion_Automatique"]) ? 0 : time() + 90 * 24 * 60 * 60;
// Création des cookies
setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
// Redirection de l'utilisateur
header("Location: /dev/private/status.php");
}
}
}
}
// Fermeture de la connexion à la base de données
mysql_close();
}
}
}
?>
A voir également:
- Problème page de connexion PHP/MySql
- Gmail connexion - Guide
- Impossible de supprimer une page word - Guide
- D'où peut venir un problème de connexion internet sur un ordinateur ? - Guide
- Page d'accueil - Guide
- Imprimer tableau excel sur une page - Guide
1 réponse
Salut !
Alors pour moi la vérification de la longueur du nom d'utilisateur et du mdp ne sont pas nécessaire, c'est quelque chose à faire dans l'inscription.
Ensuite utilise plutot l'objet pdo pour l'interaction avec ta base de données, mysql_connect va disparaitre dans les prochaines versions de php.
https://www.php.net/manual/fr/book.pdo.php
Refais donc ton code proprement avec pdo, niveau algo ca donne quelque chose comme ca :
Repost donc ton code avec pdo :)
Jérémy
Alors pour moi la vérification de la longueur du nom d'utilisateur et du mdp ne sont pas nécessaire, c'est quelque chose à faire dans l'inscription.
Ensuite utilise plutot l'objet pdo pour l'interaction avec ta base de données, mysql_connect va disparaitre dans les prochaines versions de php.
https://www.php.net/manual/fr/book.pdo.php
Refais donc ton code proprement avec pdo, niveau algo ca donne quelque chose comme ca :
Si le cookie existe, alors redirection
Sinon,
Si les informations envoyées existent, alors
On regarde qu'il y a bien un utilisateur avec ce nom
On regarde si le compte est activé
On regarde si le mdp correspond à celui renseigné
Si les mdp sont bon, alors on met les cookies et on redirige
Sinon, on affiche le formulaire
Repost donc ton code avec pdo :)
Jérémy