IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Session sur plusieurs pages


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Par défaut Session sur plusieurs pages
    Bonsoir,

    Je travaille actuellement sur un projet web, et pour une adminstration je voudrais utiliser les sessions.

    Il y a un fichier index.php, et mes pages sont tout simplement des fonctions présent dans la page index.php.

    Quand je vais sur ma page index.php, il m'affiche ma fonction index(). Il affiche le formulaire pour s'identifier et ensuite affiche la fonction index qui est caché si on es pas identifier.

    Malheureusement quand je clic dans ma page caché vers une autre page, la fonction p2()(qui devrait être une deuxieme page) ne s'affiche pas mais le formulaire d'identification et quand je le remplis je retombe sur ma fonction index().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    <?php
    session_start();
     
    $_SESSION['connect'] = 0;
     
    define('CHECK_INDEX', TRUE);
     
    include('global.php');
     
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
    	.'<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">'
    	.'<head>'
    	.'<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />'
    	.'<meta http-equiv="content-style-type" content="text/css" />'
    	.'<title>Ecrire - '.$projet['site_name'].'</title>'
    	.'<link rel="stylesheet" type="text/css" href="style/style.css"/>'
    	.'</head>'
    	.'<body>';
     
    echo '<div id="header"><div id="header-logo"></div></div>';
     
    if(!empty($_GET['Deconnexion']))
    {
    	$_SESSION = array();
    	if (isset($_COOKIE[session_name()]))
    	{
    		setcookie(session_name(),'',time()-4200,'/');
    	}
     
    	session_destroy();
    }
    elseif(!empty($_GET['P2']))
    {
    	p2();
    }
    else
    {
     
    		index();
    }
     
    function index()
    {
     
    	if(isset($_POST['login']) && isset($_POST['passe']))
    	{
    		$login = $_POST['login'];
    		$passe = $_POST['passe'];
    		$postconnexion = 1; 
    	}
    	else
    	{
    		$login = '';
    		$passe = '';
    	}
     
    	if($login == 'Plougy' && $passe == 'passe')
    	{
    		$_SESSION['connect'] = 1;
    		session_register('login', 'passe');
     
    	echo '<div id="contenu">';
     
    echo '<div id="deconnexion">'.$login.'<br /><a href="index.php?Deconnexion">Déconnexion</a></div><br /><div style="text-align: center;"><h1>Administration</h1></div>';
     
    	echo '<div style="text-align:center;"><a href="index.php?P2">Page 2</a></div>';
     
    	echo '</div>'; // FIN CONTENU
    }
    else
    {	
    	echo '<div id="contenu">';
     
    	if($postconnexion)
    	{
    		echo '<div id="connexion-erreur">Une erreur est survenue</div><br />';
    	}
    	echo '<strong>Connection à l\'administration</strong>';
    	echo'<form action="index.php" method="post">'
    	.'<p class="pclickform"><label for="login">Votre login :</label><input type="text" name="login" id="login"/></p>'
    	.'<p class="pclickform"><label for="passe">Votre passe :</label><input type="password" name="passe" id="passe"/></p>'
    	.'<p class="pclickform"><input type="submit" value="Valider"/></p>'
    	.'</form>';
     
    	echo '</div>';
    }
    }
     
    function p2()
    {
    if (isset($_SESSION['connect']))//On vérifie que le variable existe
    {
            $connect=$_SESSION['connect'];//On récupère la valeur de la variable de session
    }
    else
    {
            $connect=0;//Si $_SESSION['connect'] n'existe pas, on donne la valeur "0"
    }
     
    if ($connect == 1) // Si le visiteur s'est identifié
    {
    	echo '<div style="text-align:center;"><h2> Page 2 </h2></div>';
    }
    }
     
    echo '</body>'
    	.'</html>';
    ?>
    Je voudrais me connecter une seul fois, et ensuite aller dans les pages que je veux dans mon administration et quand j'ai fini me déconnecter.

    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Votre variable de session connect est écrasée à chaque appel de la page via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['connect'] = 0;
    Sachant que vous testez son existence pour savoir si vous êtes ou non connectés elle n'est pas vraiment nécessaire. Si vous souhaitez la définir si ce n'est pas déjà le cas ajoutez un test avec (!)isset avant.

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Par défaut
    Citation Envoyé par julp
    Votre variable de session connect est écrasée à chaque appel de la page via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['connect'] = 0;
    Sachant que vous testez son existence pour savoir si vous êtes ou non connectés elle n'est pas vraiment nécessaire. Si vous souhaitez la définir si ce n'est pas déjà le cas ajoutez un test avec (!)isset avant.
    J'ai enlevé la variable au début, mais rien ne ce passe...


  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Je crois avoir trouvé un test erroné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif(!empty($_GET['P2']))
    Celui ci-dessous serait plus approprié car ce paramètre ne prend pas de valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif(isset($_GET['P2']))
    Note : la fonction session_register est dépréciée (utilisez plutôt $_SESSION['login'] = $passe;) et $postconnexion n'est pas définie au début ($postconnexion = 0; à ajouter dans le else ?).

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Par défaut
    Citation Envoyé par julp
    Je crois avoir trouvé un test erroné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif(!empty($_GET['P2']))
    Celui ci-dessous serait plus approprié car ce paramètre ne prend pas de valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif(isset($_GET['P2']))
    Note : la fonction session_register est dépréciée (utilisez plutôt $_SESSION['login'] = $passe et $postconnexion n'est pas définie au début ($postconnexion = 0; à ajouter dans le else ?).
    Oh je vous remercie fort !

    Sinon, comment savoir la prochaine fois lequel utiliser la prochaine fois entre isset et !empty ?

    Merci

  6. #6
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Par défaut
    Une question me vient maintenant que j'ai réglé le plus gros problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	if(isset($_POST['login']) && isset($_POST['passe']))
    	{
    		$login = $_POST['login'];
    		$passe = $_POST['passe'];
    		$postconnexion = 1; 
    	}
    Dans ma fonction index() je récupère le $_POST['login'] et le $_POST['passe'], je voudrais savoir comment faire pour supprimer ce POST après les avoir récupérer (Si cela est possible).

    Car quand je rafraichis ma page caché, il me dit qu'elle contient des données envoyer par POST, et j'aime pas trop ça...

    Merci

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par Plougy
    Sinon, comment savoir la prochaine fois lequel utiliser la prochaine fois entre isset et !empty ?
    Attention à empty effectivement : isset teste uniquement l'existence d'une variable (a-t-elle été définie ?). En revanche, empty vous renverra FALSE si :
    • la variable n'est pas définie (le seul point commun avec isset) ou
    • la variable peut être interprétée comme une valeur nulle : la chaîne vide, FALSE, NULL, un tableau vide, une valeur numérique entière ou décimale nulle (0, 0.0, etc) ou la valeur entière nulle sous forme de chaîne (ie : '0')


    Le but était de savoir si $_GET['P2'] était ou non définie. Sa valeur nous importe peu puisqu'elle n'est pas utilisée et par conséquent empty, dans tous les cas, vous renvoyait FALSE car soit elle n'est pas définie soit c'est une chaîne vide.

    Citation Envoyé par Plougy
    je voudrais savoir comment faire pour supprimer ce POST après les avoir récupérer (Si cela est possible).
    C'est le navigateur qui vous les renvoie donc côté serveur il faudrait faire une redirection ou utiliser la session (mais dans votre cas ça ne présente pas de réel intérêt).

Discussions similaires

  1. [Session] Problème de gestion sur plusieurs pages
    Par GLDavid dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 11/10/2006, 17h02
  2. [Struts]Affiche d'une liste sur plusieurs pages
    Par guillaume_85 dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/06/2005, 21h23
  3. [CR?] Tableaux sur plusieurs pages
    Par Nout dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 18/05/2005, 15h58
  4. [JSP] affichage de resultat sur plusieurs pages
    Par de LANFRANCHI dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 10/02/2005, 11h00
  5. [CR8] Problème tableau sur plusieurs pages???
    Par christophe28 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 02/11/2004, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo