Alors en fait j'ai un problème qui ne se posait pas lorsque je travaillais en local et qui se pose maintenant que j'ai tout mis sur mon ftp .
J'ai une page de login qui permet d'avoir accès à mon site .
Pour cela il suffit d'entrer un login et mot de passe correct .
Avant de vous montrer le code et mon problème, voila le principe de fonctionnement :
index.php -> login.php -> preambule.php(include "session_verif.php")
- index.php est la page ou l'on entre login et mot de passe
- login.php est le fichier qui connecte a la base de données et qui vérifie les infos rentrée
si log & mdp ok : alors on ouvre preambule.php
si log | mdp non valide : alors on reste sur index.php
- session_verif.php sert a vérifier pour chaque page qu'une session est ouverte
alors voila mon problème :
- quand sur index.php je rentre un login ou mot de passe incorrect, voila le résultat :
Login ou mot de passe incorrect !
- quand je rentre un login et mot de passe corrects, voila le résultat :
Vous devez vous authentifier !
voila les parties de code :
index.php :
Compte : <input type="text" name="login" size="20">
Mot de passe : <input type="password" name="password" size="20"><p /><br />
<?php
if(isset($_GET["message"]))
{
if($_GET["message"] == "erreur") echo "<font color=red>Erreur de login ou mot de passe<p /></font>";
else if($_GET["message"] == "no_session") echo "<font color=red>Vous devez vous authentifier !<br /></font>";
}
?>
<input type="submit" name="submit" value="Connexion">
login.php :
<?php
// les variables ont bien été récupérées on se connecte donc à la bdd pour vérification du login et du mot de passe
mysql_connect("sql.free.fr", "prenom.nom", "motdepasse");
mysql_select_db("prenom_nom");
// si le formulaire d'authentification a été validé
if ($_POST["valid_form"])
{
function protect($txt)
{
$suppr = array('[',']','=','1','$','î','ô','à','ç','ç','ê','è','é','é', 'è', 'ê', 'ë', 'â', 'à', 'ä', chr(156), chr(220), 'u', 'ù', 'ü', 'ö', 'ô', 'ç', 'ï', 'î', chr(63), '!', '@', '€',chr(128), '&', '&', '%', '#', '°', ',', ';', ':', '/', '(', ')', '\'', '"', '*', '+', ' ', '---', '--',chr(133),'<','>',chr(145),chr(146), '\\', chr(253), '²');
$repl = array('','','-','','','i','o','a','c','e','e','e','e', 'e', 'e', 'e', 'a', 'a', 'a', 'a', 'u', 'u', 'u', 'u', 'o', 'o', 'c', 'i', 'i', '', '', 'a', 'eur','eur', 'et', 'et', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','-','','','','-','-', '2', '2');
$txt = str_replace($suppr, $repl, $txt);
$txt = preg_replace("#\A-*(.*?)-*\z#si","\\1",$txt);
return strtolower($txt);
}
$l_valid = protect($_POST["login"]);
$p_valid = md5(trim($_POST["password"]));
// on regarde dans la base si le login existe
$res = mysql_query ("SELECT * FROM `t_login` WHERE `user_login` = '".$l_valid."'");
// si un enregistrement corerspond a ce login
if (@mysql_num_rows ($res) > 0)
{
// on extrait ttes les infos de cet enregistrement
$row = mysql_fetch_array ($res);
// si le mot de passe correspond aussi
if ($row["user_password"] == $p_valid)
{
// on crée la session
session_name('qcm');
session_start();
$_SESSION["id"] = $row["user_id"];
$_SESSION["login"] = $row["user_login"];
$_SESSION["abracadabra"] = "lapin_rose";
// authentification reussie => accès à la page cachée
header ("Location: preambule.php");
// sinon message de mot de passe faux
}
else $err_mess = "erreur";
// sinon message de login faux
}
else $err_mess = "erreur";
}
// si l'authentification n'a pas reussi on retourne a la page de login avec message d'erreur
if ($err_mess != "") header ("Location: index.php?message=".$err_mess);
?>
session_verif.php : (que l'inclus dans toutes les pages situées apres l'authentification)
<?php
// les variables ont bien été récupérées on se connecte donc à la bdd pour vérification du login et du mot de passe
mysql_connect("sql.free.fr", "prenom.nom", "motdepasse");
mysql_select_db("prenom_nom");
// réouverture de la session
session_name('qcm');
session_start();
// on vérifie que la session est bien ouverte
if(isset($_SESSION["login"]) && isset($_SESSION["id"]) && isset($_SESSION["abracadabra"]))
{
$id_valid = $_SESSION["id"];
$l_valid = $_SESSION["login"];
$res = mysql_query(" SELECT * FROM `t_login` WHERE `user_id` = '".$id_valid."' AND `user_login` = '".$l_valid."' ");
if(@mysql_num_rows($res) == 0)
{
session_destroy();
header("Location: index.php?message=no_session");
}
// si la session est différente des paramètres rentrés
if($_SESSION["abracadabra"] != "lapin_rose")
{
session_destroy();
header ("Location: index.php?message=no_session");
}
}
// sinon on renvoi aussi à la page d'accueil
else header ("Location: index.php?message=no_session");
?>
Voila je vois pas ou est le problème donc si vous avez des suggestions ... merci de me les faire savoir :p
