Member Area PHP / MySQL
Issue
I've created a members area on my website but I have a big problem at the login page! Can you help me?
- I use a MySQL database
- The form is not on the login page but all (and he returns to the login page so it creates variables "$ _POST ['variable']").
- I do requests the username and password to login
So if you can do without a script PHP / MySQL (I'll manage to fit), would really cool and nice
Solution
- So if we assume that your login form and type:
<form action = "connexion.php" method="post">
Login <input type="text" name="login" /><br />
Mot de passe <input type="password" name="mdp" /><br /><br />
<input type="submit" value="Se connecter" />
</form>
Therefore the connexion.php page could look like this:
<?php
session_start;// ne pas oublier avant tout code html si on attaque les session
if (($_GET['action'])=='deconnection' && isset($_SESSION['login']) && isset($_SESSION['mdp']))//Si on va sur cette page mais que les sessions 'login' et 'mdp' existe déjà, c'est que l'on veut se deconnecter ... donc action ! ^_^'
{
session_destroy();// on se déconnecte de la session
echo '<meta http-equiv="refresh" content="3;URL=index.php">';
echo '<center><font color=red><b><br>Vous vous êtes bien déconnecté</b><br /><br />Vous allez être redirigé dans 3 secondes</font><br /><br /><a href="index.php">Ne pas attendre</a></center>';
}
else if (!isset($_SESSION['login']) && !isset($_SESSION['mdp']))//Sinon, si ces sessions n'existent pas, c'est qu'on veut se connecter ... donc action ! ^_^'
{
if (isset($_POST['login']) AND isset($_POST['mdp'])) // Si les variables existent
{
mysql_connect(_DBHOST,_DBUSER,_DBPASS);//Identifiant à remplacer
mysql_select_db(_DBNAME);//Nom de la base à remplacer aussi
$login= mysql_real_escape_string(htmlspecialchars($_POST['login']));//Sécurité au cas ou !
$mdp = mysql_real_escape_string(htmlspecialchars($_POST['mdp']));//Sécurité au cas ou !
$reponse = mysql_query("SELECT * FROM membres WHERE login='$login' AND mdp='$mdp'");// On fait le tour de la base pour voir si le login entré existe et a pour mot de passe celui entré
$donnees = mysql_fetch_array($reponse);//on créé un petit tableau des résultats (normalement, il y en a qu'un si t'as tout bien configuré lors de l'inscription)
if (($donnees['login']) AND ($donnees['mdp']))//Si on a un resultat ... on a plus qu'a créer les session
{
$_SESSION['login'] = $login; // Session contenant le login du membre
$_SESSION['mdp'] = md5($mdp);// Session contenant le mot de passe hashé en md5 (par mesure de sécurité et surtout de confidentialité ;) )
$_SESSION['email'] = $donnees['email'];// Session contenant l'e-mail du membre
//Donc ici, tu peux plus ou moins mettre des sessions de ce que tu veux et plus ou moins autant que tu veux.
// L'option du cookies n'est pas dévellopé ici car tu ne l'a pas demandé :p lol
echo '<meta http-equiv="refresh" content="3;URL=index.php">';
echo '<center><font color=red><b><br>Vous êtes bien identifié</b><br /><br />Vous allez être redirigé dans 3 secondes</font><br /><br /><a href="index.php">Ne pas attendre</a></center>';
}
else
{
echo '<center><font color=red><b><br>Erreur d\'authentification !</b><br />Votre login ou votre mot de passe est faux</font><br><br><a href="index.php">Retour</a></center>';
}
mysql_close();
}
}
else
{
echo '<center><font color=red><b><br>Erreur !</b><br />Vous ne pouvez pas aller sur cette page, vous êtes déjà connecté.</font><br><br><a href="Javascript:history.go(-1)">Retour</a></center>';
}
?>
Note
Solved by
gaerebut
See also
Knowledge communities.