session (encore !)
Posté : 25 avr. 2005, 20:00
Bonjour.
Je souhaite protéger mon forum par identification.
D'une part mon fichier identification qui se charge d'afficher soit le formulaire d'identification ou le formulaire de post selon si la session à démarré ou non :
<?php
if(!session_is_registered('identifiant'))
{
include ('login_reponse.php');
}
else
{
include ('insert_reponse.php');
}
?>
D'autre part, le formulaire d'identification, login_reponse.php :
<form method="POST" name="formulaire" action="lire_message.php?id_sujet_a_lire=<? echo ($dat['id']); ?>">
<table cellspacing="6" align=center>
<tr>
<td align="right"><p>Identifiant :</p></td>
<td><input type="text" name="identifiant" value="<?php echo $_COOKIE['identifiant']; ?>"></td>
<td rowspan="2"><img src="images/cles.gif"></td>
</tr>
<tr>
<td align=right><p>Mot de passe :</p></td>
<td><input type="password" name="motdepasse" value="<?php echo $_COOKIE['motdepasse']; ?>"><input type="hidden" name="id_sujet" value="<? echo $id_sujet; ?>"></td>
</tr>
<tr>
<td colspan=3 align=center><input type="submit" value=" Accès "></td>
</tr>
</table>
</form>
Et pour finir, la page lire_message :
<?php
session_start();
require ('../inc/config.php');
mysql_connect($serveur,$login,$pass);
mysql_select_db ($base);
// on recupère le password de la table qui correspond au login du visiteur
$sql = "select pwd from forum_user where login='".$identifiant."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['pwd'] == $motdepasse)
{
$expire = 365*24*3600;
setcookie("identifiant",$_POST['identifiant'],time()+$expire);
setcookie("motdepasse",$_POST['motdepasse'],time()+$expire);
$_SESSION['identifiant'] = $identifiant;
}
?>
<html>
<head>
<title>Forum</title>
</head>
<body>
...
<?php include ('identification.php') ?>
...
</body>
</html>
Le soucis que je rencontre est qu'en allant donc sur la page lire_message?id_sujet_a_lire=xx, j'ai directement le forumlaire de poste au lieu d'avoir le formulaire d'identification.
Où est le problème ?
Merci d'avance.
Je souhaite protéger mon forum par identification.
D'une part mon fichier identification qui se charge d'afficher soit le formulaire d'identification ou le formulaire de post selon si la session à démarré ou non :
<?php
if(!session_is_registered('identifiant'))
{
include ('login_reponse.php');
}
else
{
include ('insert_reponse.php');
}
?>
D'autre part, le formulaire d'identification, login_reponse.php :
<form method="POST" name="formulaire" action="lire_message.php?id_sujet_a_lire=<? echo ($dat['id']); ?>">
<table cellspacing="6" align=center>
<tr>
<td align="right"><p>Identifiant :</p></td>
<td><input type="text" name="identifiant" value="<?php echo $_COOKIE['identifiant']; ?>"></td>
<td rowspan="2"><img src="images/cles.gif"></td>
</tr>
<tr>
<td align=right><p>Mot de passe :</p></td>
<td><input type="password" name="motdepasse" value="<?php echo $_COOKIE['motdepasse']; ?>"><input type="hidden" name="id_sujet" value="<? echo $id_sujet; ?>"></td>
</tr>
<tr>
<td colspan=3 align=center><input type="submit" value=" Accès "></td>
</tr>
</table>
</form>
Et pour finir, la page lire_message :
<?php
session_start();
require ('../inc/config.php');
mysql_connect($serveur,$login,$pass);
mysql_select_db ($base);
// on recupère le password de la table qui correspond au login du visiteur
$sql = "select pwd from forum_user where login='".$identifiant."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['pwd'] == $motdepasse)
{
$expire = 365*24*3600;
setcookie("identifiant",$_POST['identifiant'],time()+$expire);
setcookie("motdepasse",$_POST['motdepasse'],time()+$expire);
$_SESSION['identifiant'] = $identifiant;
}
?>
<html>
<head>
<title>Forum</title>
</head>
<body>
...
<?php include ('identification.php') ?>
...
</body>
</html>
Le soucis que je rencontre est qu'en allant donc sur la page lire_message?id_sujet_a_lire=xx, j'ai directement le forumlaire de poste au lieu d'avoir le formulaire d'identification.
Où est le problème ?
Merci d'avance.