[php+mysql+free]pb ouverture session

Résolu/Fermé
bezourox Messages postés 729 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 19 janvier 2013 - 13 juin 2007 à 12:00
Ohm-WorK Messages postés 1464 Date d'inscription mardi 25 octobre 2005 Statut Contributeur Dernière intervention 29 octobre 2019 - 13 juin 2007 à 16:56
bonjour à vous tous .
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','$','&icirc;','&ocirc;','&agrave;','&ccedil;','&ccedil;','&ecirc;','&egrave;','&eacute;','é', 'è', 'ê', 'ë', 'â', 'à', 'ä', chr(156), chr(220), 'u', 'ù', 'ü', 'ö', 'ô', 'ç', 'ï', 'î', chr(63), '!', '@', '€',chr(128), '&amp;', '&', '%', '#', '°', ',', ';', ':', '/', '(', ')', '\'', '"', '*', '+', ' ', '---', '--',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
A voir également:

15 réponses

Utilisateur anonyme
13 juin 2007 à 12:38
je ne connais pas session_name('qcm');
mais cela ne devrait il pas etre apres le démarage de la session?
2
Utilisateur anonyme
13 juin 2007 à 12:06
as tu pensé à mettre un dossier "sessions" vide a la racine de ton ftp?
1
bezourox Messages postés 729 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 19 janvier 2013 143
13 juin 2007 à 12:13
oui justement j'ai pensé a ca dessuite mais le dossier est bien créé
0
Utilisateur anonyme
13 juin 2007 à 12:24
ouai c'est le genre de truc que je zapp et apres je cherche dans mon code pdt des heures ^^


Dans session_verif.php


met ton session_start(); en tout premier....


c'est peut etre ça!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ohm-WorK Messages postés 1464 Date d'inscription mardi 25 octobre 2005 Statut Contributeur Dernière intervention 29 octobre 2019 420
13 juin 2007 à 12:26
Salut

Essaye en mettant tes session_start() juste après le tag php.

Tchuss
0
bezourox Messages postés 729 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 19 janvier 2013 143
13 juin 2007 à 12:28
<?php
// réouverture de la session
session_name('qcm');
session_start();
// 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");

// on vérifie que la session est bien ouverte
if(isset($_SESSION["login"]) && isset($_SESSION["id"]) && isset($_SESSION["abracadabra"])) 
	{...
           ...


Voila la modif effectuée .... et le résultat est le même :s
0
bezourox Messages postés 729 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 19 janvier 2013 143
13 juin 2007 à 12:45
ben dans login.php, si login et mot de passe sont ok, alors :

// 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");	


puis dans session_verif.php, voila ce que j'ai mis :

<?php
// réouverture de la session
session_name('qcm');
session_start();
...
...
0
Ohm-WorK Messages postés 1464 Date d'inscription mardi 25 octobre 2005 Statut Contributeur Dernière intervention 29 octobre 2019 420
13 juin 2007 à 12:52
Re

Fais voir le début de ta page index

Tchuss
0
bezourox Messages postés 729 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 19 janvier 2013 143
13 juin 2007 à 12:58
<html>
	<head>
		<title>Ouverture de session</title>
		<link rel="stylesheet" type="text/css" href="../css/css.css">
		<script type="text/javascript">
		function confirmation(frm)
			{
				var user_login = document.log.login.value;
				var user_password = document.log.password.value;
				var mess = "";
				if (user_login == "") mess += "ERREUR : Renseignez correctement le login. \n";
				if (user_password == "") mess += "ERREUR : Renseignez correctement le mot de passe. \n";
				if (mess != "") 
					{
						alert (mess);
						return false;
				}	
				else
					{
						return true;	
				}
		}
		
		</script>
	</head>
	<body><br />
	<div id="preambule">
		<form action="login.php" method="post" name="log" class="text" onsubmit="return confirmation(this)">
		<input type="hidden" name="valid_form" value="true" />
		<center><table border="0" cellspacing="0" width="60%" height="40%" class="cadre_sable_fonce">
			<tr>
				<td colspan="3"><br /><center><img src="../images/logo.jpg"></center><br /></td>
				
			</tr>
			<tr>
				<td class="text_centre"><br />
					
					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">
					<br />
				</td>
			</tr>
		</table></center>
	</div>
	</body>
</html>
0
Ohm-WorK Messages postés 1464 Date d'inscription mardi 25 octobre 2005 Statut Contributeur Dernière intervention 29 octobre 2019 420
13 juin 2007 à 13:31
Re

Bon, j'ai pas assez de recul pour voir ou ca merdouille.

Essaye de mettre des tests dans ton parcours. Les 2 cas ou tu as un retour en "no_session" sont :
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");

Essaye de tester comme ca :
if(@mysql_num_rows($res) == 0)
{
echo 'bloqué cas 1';
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")
{
echo 'bloqué cas 2';
session_destroy();
header ("Location: index.php?message=no_session");
}

Tu saura comme ca ou ca bloque.

Tchusss
0
bezourox Messages postés 729 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 19 janvier 2013 143
13 juin 2007 à 13:48
mouais j'avais déja essayé ca avant de balancer un post mais le probleme c'est qu'il n'affiche rien puisque ce fichier ne contient que du code .

je viens de le tester a nouveau et ca ne marche pas puisque session_verif n'affiche rien mais ne sert qu'a rediriger ...
0
bezourox Messages postés 729 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 19 janvier 2013 143
13 juin 2007 à 14:02
tiens regarde meme ce que j'ai testé et qui ne marche pas :

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)
			{
				echo "cas1";
				session_destroy();
				header("Location: indexe.php?message=no_session");
		}
		// si la session est différente des paramètres rentrés
		if($_SESSION["abracadabra"] != "lapin_rose")
			{
				echo "cas2";
				session_destroy();
				header ("Location: indexee.php?message=no_session");
		}
}
// sinon on renvoi aussi à la page d'accueil
else header ("Location: indexeee.php?message=no_session");


les 3 headers qui renvoient a la page d'acceuil avec un message, j'ai mis des noms bidon ( indexe.php, indexee.php et indexeee.php) pour voir dans quelle boucle le programme s'engage, mais ca change rien, voila l'url qui s'affiche :

http://guillaume.priou.free.fr/taff/greta/qcm/index.php?message=no_session

Ce truc va me rendre chèvre ^_^
0
bezourox Messages postés 729 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 19 janvier 2013 143
13 juin 2007 à 14:36
ne vous embétez pas, j'ai trouvé la solution .
c'est le fichier login.php placé a la racine de mon ftp qui etait exécuté et non celui placé dans le repertoire ou se trouve index.php .

Apparament c'était ca :)

Merci quand meme a vous
0
Utilisateur anonyme
13 juin 2007 à 14:56
arf...toujours un truc con tfasson :)
0
Ohm-WorK Messages postés 1464 Date d'inscription mardi 25 octobre 2005 Statut Contributeur Dernière intervention 29 octobre 2019 420
13 juin 2007 à 16:56
héhé ^^ :)
0