Ask a question »

PHP / MySQL - Login page

July 2015


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
For unlimited offline reading, you can download this article for free in PDF format:
Php-mysql-login-page.pdf

See also

In the same category

Published by aakai1056.
This document entitled « PHP / MySQL - Login page » from CCM (ccm.net) is made available under the Creative Commons license. You can copy, modify copies of this page, under the conditions stipulated by the license, as this note appears clearly.