sécuriser une page en php avec des session

Eléphant du PHP | 62 Messages

18 juil. 2011, 13:12

bonjour
j'aimerai sécuriser une page avec une variable de session, c'est à dire que quand on veut accéeder à ma page directement, et si on est pas connecter , bah on est redériger direcetement vers la page d'authentification.
pour résoudre ça j'ai fait le script d'authentification, avec deux variable de sessions et il marche je vous donne son code"index.php"
<?php 
session_start() ; 
$login = 'root';
$password = 'test';

if($_POST && !empty($_POST['login']) && !empty($_POST['pwd']))
 {
   if(($login == $_POST['login']) && ($password == $_POST['pwd']))
    {
	    $_session['auth'] = array('log' => $login,'pass' => $password);
        echo 'vous étes bien connecté';
		print_r($_session);
    }
	else
	{
	 echo 'mauvais login ou mot de passe';
	}
 }

?>


				
<!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>
		<title>le Gestionnaire de publicité</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<link rel="stylesheet"type="text/css"href="general.css"/>
	</head>
	<body>


<div id="connect">
<form method="POST" action="pub.php">
	<br/>
	<br/>
	<table>
	<tr>
		
			<td><label>Votre login:</label></td>  			
			<td><input type="text" name="login"/></td>
	</tr>
	<tr>
			<td><label>Mot de passe :</label></td>
			<td><input type="password" name="pwd"/></td>
	<tr></tr>
	<tr></tr>
	<tr></tr>
	<tr>
		<td></td>
		<td><input type="submit" name="valider" value="Connexion"/></td>
	</tr>
	   </table>
	</div>
maintenant je veux sécuriser la page "bonjour.php" donc j'ai fait ce script
<?php session_start() ; 
if (isset ($_session['auth']) && isset($_session['auth']['login']) && isset($_session['auth']['pass']))
	{
        echo '<!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>
		<title>la page privé</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		
	</head>
	<body>
	bonjour
	<a href="logout.php">Se déconnecter</a>
    </body>
    </html>';

}
else {
echo 'nonnnnnnnnnnnnnnn';
}
?>
et ça ne marche pas, quelqu'un peut m'aider?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 juil. 2011, 14:47

Si cela ne fonctionne pas c'est parce que l'une au moins des trois variables que tu testes, n'est pas définie.

Première chose à savoir : $_session et $_SESSION sont deux variables différentes :)

Deuxième point, l'instruction print_r($_SESSION) t'aidera à débugger et te permettra voir ce que contient ta session, et donc de t'assurer que l'index que tu tests y est bien présent.. :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 62 Messages

18 juil. 2011, 14:52

avec le print_r j'arrive bien à récuperer le login et le mot de passe,
c'est au niveau de la page "bonjour.php" que ça bloque je ne comprend pas pourquoi?
pourriez vous m'aider

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 juil. 2011, 15:06

si tu regarde bien ce que te donne un print_r (ou même un var_dump) tu verra par toit même que ce que tu souhaite faire n'est pas bon.

pourquoi ?

le test de bonjour.php
isset($_session['auth']['login'])

l'affectation dans l'index.php
$_session['auth'] = array('log' => $login,'pass' => $password);

ton test échoue et c'est normal :mrgreen:


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 62 Messages

18 juil. 2011, 15:12

ah oui la je suis vraiment un boulé, c'est bon ça marche, je vous remercie beaucoup pour l'aide