Problème page de connexion PHP/MySql

danthom Messages postés 1 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();

}

}

}

?>

1 réponse

jeremy.s Messages postés 1248 Statut Membre 79
 
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 :
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
0