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 :

déconnexion par session


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut déconnexion par session
    Bonjour voila je dévelloppe une application c'est ma vraie première et je suis dans le caca lol

    J'arrive a me connecter donc c'est bon par contre je tente de faire un bouton pour se déconnecter et je voudrais savoir si ma méthode est la bonne.

    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
     $login = $_SESSION['login'];
    require('Require\Connexion_A3P.php');
    $nom = "	SELECT NOM, PRENOM
    			FROM PERSONNES
    			WHERE LOGIN = '".addslashes($login)."'";
     
    			$req = odbc_exec($conn,$nom) or die('Erreur SQL : <br />'.$nom);
     
    			while (odbc_fetch_row($req)) 
    				{ 
    					$_SESSION['nom'] = odbc_result($req,"NOM");
    					$_SESSION['prenom'] = odbc_result($req,"PRENOM");
    				}
    $nom = $_SESSION['nom'];
    $prenom = $_SESSION['prenom'];
     
    echo "<h2>";
    	echo "<center>Bienvenue ".$prenom.", ".$nom, " dans l'application GTP</center>";
    echo "</h2>";
     
    echo "<br><br>";
    echo '<center><input name="deco" value="Déconnexion" target="_blank" type="submit"></center>';
    et donc le bouton se déconnecter qui envoie vers cette page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     // On appelle la session
    session_start();
     
    // On écrase le tableau de session
    $_SESSION = array();
     
    // On détruit la session
    session_destroy();
     
    header('Location:http://a3p/GTP/0_Consultation/Consultation.php');
    Voila donc je voudrais savoir si c'est bien codé?
    Si l'autentification est suffisante?
    Si ma déconnexion est suffisante pour que l'utilisateur ne passe par l'URL par exemple ou s'il est bien déconnecter comme ca voila

    Aidez moi svp

    merci d'avance

  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
    Bonjour,

    Ca ne sert à rien de réaffecter un tableau à $_SESSION sachant que à la ligne d'après tu détruis la variable de session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    session_start();  
    session_unset();  
    session_destroy();  
    header('Location: index.php');  
    exit();

  3. #3
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    ok je modifie par contre comment se fait il que je puisse passer par l'url et aller sur les pages quand meme?

    Que pourrais je faire pour bloquer ca?

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    Citation Envoyé par drogba72 Voir le message
    ok je modifie par contre comment se fait il que je puisse passer par l'url et aller sur les pages quand meme?

    Que pourrais je faire pour bloquer ca?
    le code qui vérifie que la session existe et remplisse les conditions souhaitée doit être sur chaque page dont l'accès est restreint...

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    d'accord mais quel condition permettrait de faire ce que vous me dites?

    une simple comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($nom == '' && $prenom == '')
    				{
    				header('Location: Consultation.php');
    				}

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    disons que si tu vérifies si $_SESSION existe, c'est déjà un bon début


    Voici un exemple, la condition vérifie que la session existe, que le pseudo de session n'est pas vide, et qu'il ne soit pas égal à "guest"
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if( isset($_SESSION) && !empty($_SESSION['pseudo']) && $_SESSION['pseudo'] != "guest" ) {
         // ma session est active, je peux afficher la page
    } else {
         // ma session n'est pas active, je vais rediriger la personne vers le formulaire d'authentification
         header("Location: authentification_form.php");
    }

  7. #7
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    ok et donc ce code la est a mettre sur toute les pages que l'on veut testé?

    Enfin je voudrais savoir car j'ai un petit problème en fait deux mais un par un lol

    la redirection qui ne fait pas ce que je veut et je ne connais pas la solution

    si tu veut ma page est en deux frame et le truc c'est que je test dans une seule frame donc actuellement le code fonctionne et renvoie vers la page guest mais dans la frame testé. et l'autre frame reste.

    Alors je suppose que c'est un problème de target en faite mais je ne vois pas trop comment faire et surtout je ne connais pas la syntaxe.

    pouvez vous m'éclairer svp?

  8. #8
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    oui le code doit être dans chaque page à vérifier.

    Si tu as 2 frames et que les 2 frames doivent s'afficher ou non suivant la session, alors la vérif doit etre faite 2 fois.


    PS : les frames ça pue

  9. #9
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    ok je fais ca

    et mnt le plus gros problème lol

    j'ai un problème dans une page de mélange de session

    je fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    foreach($_SESSION as $key=>$val) 
    { 
    $requete =" UPDATE ARRET_CHAINE 
    SET NUMERO_PLAN_ACTION = '$num' 
    WHERE NUMERO_ARRET_CHAINE =".$val; 
     
    $req = odbc_exec($conn,$requete) or die('Erreur SQL : <br />'.$requete); 
    }
    hélas $val prend pas la bonne valeur pourriez vous me dire d'une part comment faire et aussi pourquoi ca fait ca? svp

  10. #10
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    bah c'est simple... je suppose que t'as pas qu'une seule info dans ta $_SESSION (pour le savoir =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo "<pre>";
    print_r($_SESSION);
    echo "</pre>";
    )

    donc admettons que ça te retourne qqch comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Array (
         key1 => "value 1",
         key2 => "value 2",
         key3 => "value 3",
    )
    donc d'apres ton code, il va faire 3 fois la requete, il va d'abord attribué "value 1" à ton champ, ensuite "value 2" et pour finir "value 3".
    Ce qui fait que si tu regardes la valeur de ton champ à la fin, elle sera "value 3"

  11. #11
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    voila ca me renvoie tout ca

    Array
    (
    [login] => s008248
    [nom] => Lelais
    [prenom] => Sebastien
    [d] => 01-02-2009
    [f] => 28-02-2009
    [checkbox0] => 7
    [checkbox1] => 8
    )

    et ca c'est toute mes sessions de toute mes pages moi je souhaiterais récupérer que les deux checkbox et la je ne sais pas comment faire

  12. #12
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    bah si t'as 2 checkbox c'est simple :

    $_SESSION['checkbox0'] & $_SESSION['checkbox1']

    si tu en as un nombre 'n' je te conseille de faire un array
    du genre :

    $_SESSION['checkboxes'][0] = "valeur 1";
    $_SESSION['checkboxes'][1] = "valeur 2";
    $_SESSION['checkboxes'][2] = "valeur 3";

    et pour parcourir tes checkboxes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach( $_SESSION['checkboxes'] AS $k => $v ) {
         echo "<p>checkbox n°".$k." => valeur : ".$v."</p>";
    }

  13. #13
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    merci pour votre réponse et je ne doute pas que ca ne fonctionne pas
    mais dans la page juste avant voici le code pour recevoir mes variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($_GET as $key=>$val) 
    	{ 
    	$_SESSION[$key] = $val;
    	}
    que dois je changer svp?

  14. #14
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    Citation Envoyé par drogba72 Voir le message
    que dois je changer svp?

    baah qu'est-ce que tu veux faire ?

  15. #15
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    regarde j'ai ma première page avec cette fonction

    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
     
    function ouvreFenetreAjouter() 
    	{ 
    		var valeurCheckDansLien="Formulaire_action.php?"; 
    		TabChecks=document.getElementsByName('checkbox1'); 
    		TCL=TabChecks.length; 
    		var j = 0; 
    		for ( var i=0;i<TCL;i++) 
    		{ // ici on parcourre les elements pour savoir lequel est coché 
    			if (TabChecks[i].checked) 
    			{ 
    				if ( j == 0 ) 
    				{ 
    					valeurCheckDansLien += "checkbox" + j + "=" + TabChecks[i].value; 
    					j++; 
    				} 
    				else 
    				{ 
    				valeurCheckDansLien += "&checkbox" + j + "=" + TabChecks[i].value; 
    				j++; 
    				} 
    			} 
    		} 
    		if( j > 0)
    		{// si un radio est coché 
    		window.open(valeurCheckDansLien, "", config='width=600, height=600, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');  
    		} 
    		else 
    		{ 
    		alert("pas de d'arrêts chaînes selectionné !"); 
    		} 
    	}
    ensuite je veut récupérer mes checkbox donc je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     foreach($_GET as $key=>$val) 
    	{ 
    	$_SESSION[$key] = $val;
    	}
    enfin j'ai mis le code que tu ma passé dans ma troisième page mais il ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     foreach($_SESSION['checkboxes'] AS $key => $val ) 
    		{ 
    		echo "<p>checkbox n°".$key." => valeur : ".$val."</p>";
    		}

  16. #16
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    Citation Envoyé par drogba72 Voir le message
    regarde j'ai ma première page avec cette fonction

    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
     
    function ouvreFenetreAjouter() 
    	{ 
    		var valeurCheckDansLien="Formulaire_action.php?"; 
    		TabChecks=document.getElementsByName('checkbox1'); 
    		TCL=TabChecks.length; 
    		var j = 0; 
    		for ( var i=0;i<TCL;i++) 
    		{ // ici on parcourre les elements pour savoir lequel est coché 
    			if (TabChecks[i].checked) 
    			{ 
    				if ( j == 0 ) 
    				{ 
    					valeurCheckDansLien += "checkbox" + j + "=" + TabChecks[i].value; 
    					j++; 
    				} 
    				else 
    				{ 
    				valeurCheckDansLien += "&checkbox" + j + "=" + TabChecks[i].value; 
    				j++; 
    				} 
    			} 
    		} 
    		if( j > 0)
    		{// si un radio est coché 
    		window.open(valeurCheckDansLien, "", config='width=600, height=600, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');  
    		} 
    		else 
    		{ 
    		alert("pas de d'arrêts chaînes selectionné !"); 
    		} 
    	}
    ensuite je veut récupérer mes checkbox donc je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     foreach($_GET as $key=>$val) 
    	{ 
    	$_SESSION[$key] = $val;
    	}
    enfin j'ai mis le code que tu ma passé dans ma troisième page mais il ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     foreach($_SESSION['checkboxes'] AS $key => $val ) 
    		{ 
    		echo "<p>checkbox n°".$key." => valeur : ".$val."</p>";
    		}
    Hmm ta façon de récup les checkboxs est tres bizarre :
    1] ça vient d'un formulaire mais du les envoies en $_GET (bon... à la limite...)
    2] tu les met dans une $_SESSION Oo (avec d'autres infos of course)
    3] tu récupères tout le contenu de ta session au lieu de récup que les checkbox...
    4] tu récupères tes checkboxs en JS only Oo le premier mec qui désactive JS il fait quoi sur ton site ? ^^

    En général, voici plutot comment on ferait :

    (Oui je sais, là je fais un HTML pourri mais c'est pour l'exemple, faut pas m'en vouloir )
    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
     
    <?php
    session_start();
     
    if( isset($_POST['action']) && $_POST['action'] == "envoyer" ) {
         foreach( $_POST['checkboxes'] AS $k => $v ) {
              if( !empty($v) ) {
                   $_SESSION[checkboxes][$k] = $v;
              }
         }
    }
    ?>
    <form method="post" action="" />
    <input type="checkbox" id="val1" name="checkboxes[val1]" /> val 1
    <input type="checkbox" id="val1" name="checkboxes[val2]" /> val 2
    <input type="checkbox" id="val1" name="checkboxes[val3]" /> val 3
    <input type="checkbox" id="val1" name="checkboxes[val4]" /> val 4
    <input type="hidden" name="action" value="envoyer" />
    <input type="submit value="Envoyer" />
    </form>

  17. #17
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    non mais si j'ai fait comme ca c'est parce que je suis obligé lol

    en faite j'envoie mes données de checkbox dans un popup et il n'y a pas d'autres solution que de passer par JS

    Ensuite c'est un site intranet pour l'entreprise donc tout le monde aura js d'activer

    donc puis je avoir la solution expliquer précédemment svp?

  18. #18
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    bah, le plus simple reste quand même ma solution...

    tu fais toutes tes vérifications sur la même page... (je dis vérification car ça va souvent de paire avec un formulaire)

    s'il y a une erreur => affichage du formulaire

    Si pas d'erreur => been déjà t'affiches la page qu'il te faut, et tu ajoute le JS de pop, donc qqch comme ça
    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
     
    <?php
    // je fais mes vérifs
     
    if( $error ) {
         // affichage du formulaire par exemple
    } else {
        echo "BRAVO ! Ca a marché !";
    ?>
    <script type="text/javascript">
        window.open(.......................);
    </script>
    <?php>
    }
    ?>

Discussions similaires

  1. Allocation mémoire par session
    Par joziel dans le forum Oracle
    Réponses: 7
    Dernier message: 09/07/2007, 16h53
  2. [Sécurité] sécurisation par session et adresse IP
    Par Giantrick dans le forum Langage
    Réponses: 2
    Dernier message: 22/05/2007, 14h13
  3. Réponses: 1
    Dernier message: 16/05/2007, 17h36
  4. Identification par session : erreur
    Par arnaudperfect dans le forum Langage
    Réponses: 2
    Dernier message: 16/03/2007, 11h40
  5. 1 bouton 1 seul click par session
    Par unmulot dans le forum Langage
    Réponses: 5
    Dernier message: 06/07/2006, 11h50

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