SESSION PHP : BONJOUR LES DEGATS !

Résolu/Fermé
iBi0tux Messages postés 71 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 28 août 2009 - 13 déc. 2008 à 15:57
 toto - 19 déc. 2008 à 08:25
Bonjour,

Je suis en train de réaliser un site avec un formulaire de connexion. Les informations sont comparées avec celles d'unes base SQL. Malheureusement un problème se pose lors de la redirection vers l'index après la connexion.

<?php
	
	if(!ISSET($_SESSION))
		session_start();
	
	mysql_connect('********', '********', '********');
	mysql_select_db('********');

	$reponse = mysql_query('SELECT name , password FROM players WHERE name=\'' . $_SESSION['name'] . '\' AND password=\'' . $_SESSION['pass'] . '\'') or die(mysql_error());
	$donnees = mysql_fetch_array($reponse);

	if(!$donnees)
	{
		?>
		<html>
			<head>
				<link rel='stylesheet' type='text/css' href='game.css' />
			</head>
			<body class="fond">
			<div class="formulaire">
				<?php
					if(!$_GET['page'])
						$_GET['page'] = '';
					switch($_GET['page'])
					{
					case 'error1':
						echo '<b><font color=red>Pseudo ou mot de passe incorect</font></b>';
					break;
					}
				?>
				<form action="connexion.php" method="post">
					<input type="text" name="login">
					<input type="password" name="password">
					<input type="submit" value="CONNEXION" class="bouton">
				</form>
			</div>
		<?php	
	}
	else
	{
		
			// CETTE PARTIE LA N'EST CENSEE APPARAITRE QU'APRES LA CONNEXION. 
	}
?>


Ce qui se passe réellement c'est qu'après la connexion, la page voulue s'affiche mais, dès que l'on actualise l'on actualise la page, la variable $_SESSION perd toutes les valeurs et je retombe sur le formulaire de connexion.
Cela est embettant puisque la page index.php est censée recevoir (dans la deuxième partie) des informations venant par méthode GET. Mais dès que la page est relancée avec ces données en paramètre, je me retrouve également sur le formulaire de connexion.

Comment remédier à ce problème ?

voici connexion.php (au cas ou l'erreur proviendrait de ce fichier) :

<?php
$login = mysql_real_escape_string($_POST['login']);
$password = md5(mysql_real_escape_string($_POST['password']));

	mysql_connect('********', '********', '********');
	mysql_select_db('********');

$reponse = mysql_query('SELECT name , password FROM players WHERE name=\'' . $login . '\' AND password=\'' . $password . '\'') or die(mysql_error());
$donnees = mysql_fetch_array($reponse);

if($donnees)
{
	session_start();
	$_SESSION['name'] = $login;
	$_SESSION['pass'] = $password;
	echo '<script>document.location="index.php"</script>';
}
else
{
	echo '<script>document.location="index.php?page=error1"</script>';
}


?>



Merci

6 réponses

avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
13 déc. 2008 à 16:09
Bonjours,

Celà peut paraître bête mais mets-tu bien ce code avant d'écrire le premier code html ? :
<?php session_start(); >?


Il ne peut y avoir aucun caractère juste avant "<" (parfois un caractère invisible vient se mettre quand tu travail le fichier sur Linux et sur Windows)
0
iBi0tux Messages postés 71 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 28 août 2009 1
13 déc. 2008 à 16:13
oui, regardes les sources que j'ai mises
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
14 déc. 2008 à 16:50
Avec les sources que tu as mises, je ne vois pas de session_start(); avant quoi que ce soit.

Voici ce à quoi doit ressembler le début de toutes les pages :

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
...


Ou bien si tu veux directement mettre du PHP (par exemple pour un moteur de templates) :

<?php
session_start();
//ton code PHP
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
...


PS : Je voulais dire premier code HTML mais aussi de PHP donc <?php session_start(); ?> doit être la première chose à lire (même pas un code PHP avant)
0
iBi0tux Messages postés 71 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 28 août 2009 1
15 déc. 2008 à 08:58
c'est pourtant ce que je faisait !

mais, le problème venait de wamp server. en hébergeant les pages sur un autre serveur, le script fonctionne comme je l'avais mis.

merci quand même
0

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

Posez votre question
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
19 déc. 2008 à 01:01
Si le problème est résolu (je pense bien que c'est le cas), merci de mettre le sujet "Résolu"
0
Bonjour

Dans connexion.php, juste avant if ($donnees), rajoute

echo 'nombre de réponses : ',mysql_mum_rows($donnees);
exit();

(sans oublier le exit sinon tu risques de retourner sur index)

Tu verras probablement qu'il y a 0 réponses avec wamp. Restera à voir pourquoi.
0