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] Changement de session invonlontaire


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 24
    Points : 14
    Points
    14
    Par défaut [Cookies] Changement de session invonlontaire
    Bonjour à tous,

    Pour un site perso, je souhaite limiter l'accès à certaines pages uniquement à des personnes identifiées et encore limiter l'accès à certaines pages aux personnes identifiées par un niveau de sécurité ('total' ou 'limite' dans ma bdd)

    Voilà un bout de code au moment de l'authentification :

    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
    $req=mysql_query("SELECT  nom, securite FROM login WHERE login='$login' AND pass='$passw'");
     
    $nb=mysql_num_rows($req);
     
    if($nb==1){
    	while($res=mysql_fetch_array($req)){
     
    		$nom=$res['nom'];
    		$securite=$res['securite'];
    	}
     
    	session_start();
     
    	$_SESSION['id']=session_id();
    	$_SESSION['nom']=$nom;
    	$_SESSION['securite']=$securite;
     
    	header("location:accueil.php");
    }
    else{
    	header("location:erreur.php");
    }
    Dans mon admin, j'ai donc un petit formulaire qui me permet de modifier le nom, le niveau de sécurité ... :

    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
    <form action="log.php" method="post">
    <p>
    <label>Nom :</label>
    	<input type="text" name="nom_modif" value="<?php echo $nom; ?>">
    	<input type="hidden" value="<?php echo $id; ?>" name="lid">
    </p>
    <p>
    <label>Niveau Sécurité:</label>
    	<select name="niveau_secu_modif">
    		<option value="<?php echo $niveau_admin; ?>"><?php echo $niveau; ?></option>
    		<option value="1">Accès limité</option>
    		<option value="2">Accès total</option>
    	</select>
    </p>
    <p>Souhaitez-vous modifier l'identifiant et le mot de passe : <input type="radio" value="non" name="modif_id" checked>non <input type="radio" value="oui" name="modif_id">oui</p>
    <p>
    <label>Identifiant :</label>
    	<input type="text" name="log_modif">
    </p>
    <p>
    	<label>Mot de Passe :</label>
    	<input type="text" name="pass_modif">
    </p>
    	<div style="margin-left: 200px; margin-top:20px;">
    <input type="image" src="image/bouton_modif.jpg" onmouseover="this.src='image/bouton_modif2.jpg'" onmouseout="this.src='image/bouton_modif.jpg'">
    							<a href="log_modif.php?modif_log=<?php echo $id;?>"><img src="admin_image/bouton_reset.jpg" border="0" onmouseover="this.src='admin_image/bouton_reset2.jpg'" onmouseout="this.src='admin_image/bouton_reset.jpg'"></a>
    </div>
    Formulaire traité de la façon suivante :

    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
    if(isset($_POST['nom_modif'])){
    	$extraction=extract($_POST, EXTR_OVERWRITE);
    	$nom_modif=addslashes($nom_modif);
     
    	if($modif_id=="non"){
    		$sql3="UPDATE login SET nom='$nom_modif', securite='$niveau_secu_modif' WHERE id='$lid'";
    		$req3=mysql_query($sql3, $connection);
    	}
     
    	if($modif_id=="oui"){
    		$log_ajout2=trim($log_modif);
    		$login_modif3=SHA1($log_ajout2);
    		$pass_ajout2=trim($pass_modif);
    		$pass_modif3=SHA1($pass_ajout2);
     
    		$sql5="UPDATE login SET nom='$nom_modif', securite='$niveau_secu_modif', pass='$pass_modif3', login='$login_modif3' WHERE id='$lid'";
    		$req5=mysql_query($sql5, $connection);
    	}
     
    	if(isset($req5)||isset($req3)){
    		$num_mess="23";
    	}
    	else{
    		$num_mess="0";
    	}
    }
    Et c'est là que ça coince (sur le serveur distant parce qu'en local avec esayphp ça fonctionne parfaitement) lorsque que je fais une modification du nom ou du niveau de sécurité je me retrouve sous la session de la personne que je viens de modifier (donc $_SESSION['nom'] et SESSION['securite'] changent de valeur)
    et si je me relogue sous mon vrai nom il me reconnait toujours sous le mauvais nom et le mauvais niveau de sécurité donc un changement de cookie en plus ??!!

    J'y comprends plus rien ...

    Merci pour votre aide ...

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    Pas 36000 solutions, soit tu es conscient que le fait de changer les valeurs de sécurité d'un compte n'affectera pas les comptes actuellements connectés.

    Soit, à chaque chargement de page, tu ne fais pas que de te contenter que la session existe, mais pr la même occasion vérifie si les valeurs de la session sont identiques à celles présentes en DB. Si ce n'est pas le cas -> session_destroy(); header('location:...');

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    Je comprends bien qu'un changement dans ma bdd n'affectera pas des valeurs de session en cours d'utilisation.

    Ce que je pige pas surtout c'est par quel "hasard" en modifiant ma base de login mes valeurs de session changent. Si je me connecte en tant que Toto avec accès total et que je change le statut de mon pote Titi pour qu'il soit en accès limité, après validation de mon formulaire je me retrouve en tant que Titi en accès limité ... pas cool !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Bon, j'ai trouvé la solution à mon souci : dans ma création de session je définissais une variable $_SESSION['nom'] et dans mon formulaire de modification j'avais aussi une une variable $nom ... je pensais qu'il faisait la différence entre les deux ... ben non !!! en renommant une des 2 variables tout s'est remis dans l'ordre !

    Par contre, je serais curieux de savoir pourquoi le serveur faisait un changement automatique de mes variables de sessions et m'envoyer un nouveau cookie sans passer par le formulaire de création de session ?

  5. #5
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Par contre, je serais curieux de savoir pourquoi le serveur faisait un changement automatique de mes variables de sessions et m'envoyer un nouveau cookie sans passer par le formulaire de création de session
    Il ne faisait pas un changement automatique, comme tu le dis c'est toi qui faisait le changement en leur affectant une nouvelle valeur (vu que tu utilisais la même session).

    Lorsque tu valorises une variable de session, ton navigateur te créé un cookie de session. Aussi, pas besoin d'un formulaire spécifique pour créer une session.

    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    session_start();
    $_SESSION['nom'] = 'nom';
    Aura pour effet immédiat de te créer un cookie de session.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    Ok, merci pour ta réponse

    J'avais surtout pas fait attention que 2 variables portées le même nom ... à partir de là ça ne pouvait que coincer mais je savais pas non plus qu'on pouvait réaffecter des valeurs à des variables de sessions en cours de session ... et qu'à partir de là il me créait un nouveau cookie ... débutant hé oui !

    merci pour les infos !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. session et cookie changement couleur d'un site web
    Par samspitz dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 20/05/2009, 17h00
  2. [Cookies] Perte de session au changement d'arborescence
    Par lelapinou dans le forum Langage
    Réponses: 9
    Dernier message: 22/06/2007, 17h46
  3. [Cookies] newbie: Les sessions en PHP
    Par yoda_style dans le forum Langage
    Réponses: 12
    Dernier message: 20/01/2006, 21h49
  4. Réponses: 2
    Dernier message: 05/12/2005, 12h02
  5. besoin info sur le cookie et la session ?
    Par vbcasimir dans le forum Web
    Réponses: 8
    Dernier message: 16/11/2005, 12h45

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