[PHP]Problème de "Variables de sessions"

Fermé
dev84 - 29 janv. 2008 à 09:49
 Utilisateur anonyme - 29 janv. 2008 à 15:50
Bonjour à tous,

j'utilise depuis peu des variables de session pour filtrer les accès à la partie professionnelle d'un site. Pour accéder à cette partie pro, l'utilisateur doit obligatoirement se loguer via un formulaire en saisissant son adresse mail et son mot de passe. Il accède donc à la page d'accueil du site professionel.

L'utilisateur peut donc surfer sur ce site sans contrainte.
Seul problème...
dans ma page index.php, j'utilise :
<?php session_start();

$_SESSION['mail'] = $_POST['mail']

if($_SESSION['mail'])
affichage de la page
sinon
pas d'affichage.

Cela fonctionne bien mais si l'utilisateur vient à cliquer sur la page index alors qu'il se trouvait sur une autre page, le post du mail n'existe plus et donc rien ne s'affiche...

Je viens donc demander votre aide car je ne vois pas exactement comment résoudre ce problème...

Je vous remercie par avance.

Bonne continuation.

13 réponses

Utilisateur anonyme
29 janv. 2008 à 11:03
Bonjour,

Cela semble normal puisque dans index on initialise la variable de session avec un POST qui est vide qand on reclique sur index.php
il me semble alors qu'il faut mettre :


if (!isset($_SESSION['mail'])) $_SESSION['mail'] = $_POST['mail'];
0
merci pour ta réponse giheller :)

Cependant avec cela, il n'y a plus de sécurité, je m'expliqe :

if (!isset($_SESSION['mail'])) $_SESSION['mail'] = $_POST['mail'];

if ($_SESSION['mail']à
{
affichage de la page
}
else
{
pas d'affichage
}

si j'ajoute ton code, il n'y a plus de filtrage d'accès sur la page index.php ...
0
Sh@tter Messages postés 157 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 octobre 2009 46
29 janv. 2008 à 11:43
Tu ne devrais pas déjà mettre :

<?php
if ($_SESSION['mail']==NULL)
{
?>

<!-- affichage lorsque personne n'est connecté -->

<?php
}
if ($_SESSION['mail']!=NULL)
{
?>

<!-- affichage pour une personne qui est connecté -->

<?php
}
?>


Et aussi tu n'as pas mis de point virgule à : $_SESSION['mail'] = $_POST['mail']
Donc : $_SESSION['mail'] = $_POST['mail'] ;
0
Toujours le même problème avec cette solution,
une fois logué, on peut parcourir les pages à sa guise mais si l'on vient à recliquer sur la page "index.php" ... ca ne fonctionne plus, le $_SESSION['mail'] passe à nul donc plus aucun affichage...
0

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

Posez votre question
mon code :
<?php session start();

$_SESSION['mail'] = $_POST['mail'];

if($_SESSION['mail'] == NULL)
{
echo ' ';
}

if($_SESSION['mail']!=NULL)
{
affichage de la page
}
0
Sh@tter Messages postés 157 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 octobre 2009 46
29 janv. 2008 à 11:55
Donc c'est qu'il y a une partie de code qui pose probleme dans la page index.php. C'est dans cette page là que tu as ton script de connexion?

Fais voir le début du code au cas où ce sera plus simple pour voir le problème.
0
mes autre pages contiennent seulement
<? session_start();
if ($_SESSION['mail'])
{
affichage
}
else
{
pas d'affichage
}
0
Sh@tter Messages postés 157 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 octobre 2009 46
29 janv. 2008 à 12:00
Pour cette partie il n'y a pas de problème...
Mais alors c'est dans cette page que tu fais le formulaire de connexion? Parce que par exemple si tu n'as pas fais de :
if (isset ($_POST['mail']) && isset($_POST['pass']))
, ça peut poser problème.

De plus un conseil avant de faire
$_SESSION['mail'] = $_POST['mail'];

fais déjà un $mail = mysql_real_escape_string(htmlspecialchars($_POST['mail']));
et après le $_SESSION['mail'] = $mail;
Pour des raisons de sécurité^^
0
merci pour ces conseil :)

mais je peux t'assurer que les variables mail et pass parviennent très bien via la balise <form> à travers des input type="hidden"

j'ai fait un "echo" des 2 variables je les recois bien pourtant c'est pour cela que je ne comprends pas trop le soucy que je rencontre ^^

je suis ouvert à toutes propositions, je viendrai mettre à jour l'évolution de mon code si je trouve une solution...
0
Sh@tter Messages postés 157 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 octobre 2009 46
29 janv. 2008 à 12:07
Comme tu veux, tu aurais dû tout de même filer les sources de connexion ça aurait aider, parce que trouver une solution sans voir le code... mais bon.
A +
0
la solution fournie au début par giheller devrait fonctionner, et elle conserve bien la sécurité initiale:

<?php
session_start();

if (!isset($_SESSION['mail'])) //si la variable de session n'existe pas encore
{
$_SESSION['mail'] = $_POST['mail']; /*alors on la récupère dans les données de formulaire envoyées. mais on ne récupère rien si pas de données envoyées. donc $_SESSION['mail'] n'existe toujours pas si le visiteur n'est pas identifié */
}

if ($_SESSION['mail']) //si des données de formulaire ont effectivement été récupérées
{
affichage de la page
}
else
{
pas d'affichage
}
?>

sans oublier le conseil de sécurité de Sh@tter ^^
bien sûr tout ça ne vaut que si tu as fait une vérif sur le mail et le pass en bdd avant d'envoyer tes données par post ('videmment tu as du le faire, mais comme tu ne donnes pas le code du formulaire... ^^' )
0
effectivement ca fonctionne ... désolé pour giheller -_-'

Encore merci d'avoir répondu présent, votre aide m'aura été plus que précieuse, surtout toi Feadin ;) .

Je vous remercie infiniement

Bonne continuation
0
Utilisateur anonyme
29 janv. 2008 à 15:50
désolé ? y a pas de soucis ....
0