[PHP]Problème de "Variables de sessions"
                                    
                        dev84                    
                                    -
                                     
Utilisateur anonyme -
        Utilisateur anonyme -
        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.
                
            
                
    
    
    
        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.
        A voir également:         
- [PHP]Problème de "Variables de sessions"
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Www.yahoomail.com ouverture de session - Forum Yahoo mail
- Teamviewer code de session expiré ✓ - Forum logiciel systeme
- Estelle vient de verrouiller sa session d'ordinateur. que peut-on dire ? ✓ - Forum Windows 7
13 réponses
                        
                    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'];
                
                
    
                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'];
                        
                    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 ...
    
                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 ...
                        
                    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'] ;
    
                <?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'] ;
                        
                    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...
    
                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...
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
}
    
                <?php session start();
$_SESSION['mail'] = $_POST['mail'];
if($_SESSION['mail'] == NULL)
{
echo ' ';
}
if($_SESSION['mail']!=NULL)
{
affichage de la page
}
                        
                    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.
    
                Fais voir le début du code au cas où ce sera plus simple pour voir le problème.
                        
                    mes autre pages contiennent seulement 
<? session_start();
if ($_SESSION['mail'])
{
affichage
}
else
{
pas d'affichage
}
    
                <? session_start();
if ($_SESSION['mail'])
{
affichage
}
else
{
pas d'affichage
}
                        
                    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é^^
    
                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é^^
                        
                    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...
    
                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...
                        
                    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 +
    
                A +
                        
                    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... ^^' )
    
                <?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... ^^' )
