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 :

[Cookies] Fonctionnement au niveau de l'expiration


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Par défaut [Cookies] Fonctionnement au niveau de l'expiration
    Bonjour,
    Je veux limiter certaines pages de mon site à l'accès. J'utilise pour cela des sessions. Tout fonctionne pour l'identification des mots de passes et des logins qui sont dans une base de données SQL Server. Par contre, j'ai un pb pour le suite. J'ai mis le code suivant sur chacune de mes pages afin que pour les consulter, l'utilisateur ai ouvert une session :
    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?
    session_start();
     
    if(!isset($_SESSION['login'])) {
      echo 'Vous n\'êtes pas autoris´ à acceder à cette zone';
      include('login.htm');
      exit;
    }
    ?>
    donc si l'ulilisateur n'est pas identifié, il ne peut pas accèder à la suite. Le pb c'est que si je ferme la page ( et que même je redémarre le serveur), je peux accéder à toutes pages sans m'être identifié avant. On dirait qu'il conserve le login. Si qq voit d'où vient le pb... Merci.

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Les sessions sont, il me semble, valable pour une durée donnée (que tu définis quand tu crées ladite session.
    Donc oui si tu as mis qu'elle était valable 3h, la fermeture du navigateur ou le rédémarrage d'Apache conserve tout de même la validité de ta session pendant 3h.
    Montres le code qui crée la session pour voir

  3. #3
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Les sessions sont stockées (en general) dans des fichiers sur le serveur.

    L'identifiant de ce fichier est (en general) stocké dans un cookie.

    Du coup, si tu ferme tout, mais que le cookie est encore valide sur le poste client (date pas perimée) et que la session est encore valide sur le serveur (date pas perimée) ben tu est reconnecté automatiquement.

    (t'es pas deconnecté, en fait)

    Plusieurs solutions :

    - timeout sur le cookie / la session (genre 15 min) comme ça, au bout de 15 minutes sans action de l'utilisateur, la session est detruite
    - sur la page d'accueil du site, tu vide la session, ça oblige à se reconnecter
    - y'en a surement d'autres, mais c'est dejà les pistes les plus classiques

  4. #4
    Membre averti
    Profil pro
    Développeur
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Par défaut
    code de création de la session :
    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
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    <?php
    // On démarre la session
    session_start();
    $loginOK = false; 
    ?>
     
     
    <link rel="stylesheet" type="text/css" href="indexcss.css"/>
    <HTML>
    <HEAD>
     
    <TITLE>
    </TITLE>
    </HEAD>
    <BODY>
    <div align="center">
    <h1><font size=10><b><u> Site du télé suivi </font></u></b></h1>
    </div>
     
    <?
      	if( $id = mssql_connect('ESMAIL_AHOUZI','','') )
    			{
    				if( $id_db = mssql_select_db('BDTR') )
    					{
     
    					}
    				else
    					{
    					printf("Echec de connexion à la base");
    					}
     
    			}
    	else
    			{
    				printf("Echec de connexion au serveur de base de données");
    			}
     
     
     
     
     
     
    		if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['password']))
    			{
    				$requete = "SELECT pwd,nom,login FROM identification WHERE login='".$_POST['login']."'";
     
    				$req = mssql_query($requete) or die('Erreur SQL !<br>'.$mysql.'<br>'.mssql_error());
     
    				$data = mssql_fetch_assoc($req);
     
     
     
    				if($data['pwd'] !=$_POST['password'])
    					{
    					?>
    					<div align="center"><br><br><br><big>
    					<?
    				echo "Désolé, le mot de passe : " . $_POST['password'] . "<br/>"; 
    				echo "et le login : " . $_POST['login'] . "<br/>"; 
    				echo " ne correspondent pas "
     
     
    			?>		<br><br><br>
    				Cliquer <a href="login.htm">ici</a> pour recommencer
    					</big></div>
     
     
    				 </big></div>
    					<?
     
     
    					}
    				else
    					{
    					?>
    					<div align="center"><br><br><br><big>
    					<?
    					echo " Bienvenue";
    					?> <br><?
                        $loginOK = true;
     
    					echo $data['nom'];
    					?> <br><br><br><?
    					echo" vous êtes maintenant connecté à la base de données";
    					?> <br><br><br>
    					Cliquer <a href="page_carte_maroc.htm">ici</a> pour continuer
    					</big></div>
    					<?
    					}
    		}
     
     
     
    		else
    			{
    			?> <div align="center"><br><br><br><big><?
    				echo "Vous avez oublié de remplir un champ";
    				?> <br><br><br>
    					Cliquer <a href="login.htm">ici</a> pour recommencer
    					</big></div>
    					<?
     
    			}
     
     
     if ($loginOK) 
    {
     
      $_SESSION['login'] = $data['login'];
     
     
     
    }
     
     
     
    ?>
    <div align="center">
     </br></br>
           Retour au sommaire, cliquer<a href="sommaire.htm" color="red"> ICI</a><br/></br>
    </div>
    </BODY>
    </HTML>
    En fait je voudrais que dès que l'utilisateur n'est plus sur le site, ou bien dès qu'il ferme le navigateur, la session se ferme.

  5. #5
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Dans ce cas, desactive la propagation de l'identifiant de session par cookie.

    Comme ça, l'utilisateur est obligé de se loggué à chaque fois qu'il va sur ton site par une adresse directe et pas par un lien (l'identifiant de session est propagé dans les liens)

    Pour plus d'infos, il y a les tuto sur les sessions

  6. #6
    Membre averti
    Profil pro
    Développeur
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Par défaut
    Comment puisque désactivé la propogation de session par lien ? Il ne faut pas que l'utilisateur soit bloqué à chacune de mes pages. Tout de que je veux c'est qu'il soit obligé de se reconnecter à chaque fois qu'il revient dessus.

  7. #7
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Comment puisque désactivé la propogation de session par lien ?
    J'ai pas tout compris, là....

    Propagé l'identifiant par les liens, ça veut dire que le serveur va rajouté l'identifiant à chaque lien de tes pages, de facon automatique et transparente.

    Donc si l'utilisateur clique sur un lien de la page, ça marche.

    Par contre, si il tapes l'adresse dans IE, ça marche pas (il est pas connecté)

    Ca se configure dans la conf. du serveur. Ca depend aussi des hebergeurs.

    Mais un tutos sur l'utilisation des session pour securiser un site t'aiderais surement

Discussions similaires

  1. [Cookie] Bug de la date d'expiration
    Par AsPrO dans le forum ASP.NET
    Réponses: 0
    Dernier message: 13/08/2009, 11h29
  2. [Cookies] Fonctionnement avec beaucoup de données
    Par Arkolos dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2009, 20h30
  3. Fonctionnement Infoview niveau code
    Par Deciprog dans le forum Webi
    Réponses: 3
    Dernier message: 08/04/2009, 16h31
  4. Réponses: 3
    Dernier message: 03/01/2009, 18h59
  5. Réponses: 3
    Dernier message: 19/10/2006, 11h45

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