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 :

Récupérer variable de session


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2011
    Messages : 64
    Par défaut Récupérer variable de session
    Bonjour,

    Je suis entrain de construire un site internet.

    Sur ma page d'index j'ai des menus mais je souhaite qu'il ne soit accessible qu'uniquement au personne identifié. J'ai donc créé un formulaire (relié à une BDD) permettant de s'identifier dont voici le code :

    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
    <?php
     
    //inclusion du fichier qui contient les fonctions
     
    include("../include/connexion.inc.php");
    include("../include/fonctions.inc.php");
     
     
    $idcom2=connexion("evaluation","parametre_connec");
     
     
     
    //appel de la fonction pour construire le début de la page
    debut_html();
     
    echo"
    <form method='POST' action='verifid.php'>
    <h3>S'authentifier</h3>
    ID :
    <input type='text' name='id' value='' /><br></br>
    Mot de passe  :
    <input type='password' name='mdp' value='' /><br></br>
    <input type='submit' value='Envoyer' />";
     
     
     
    //appel de la fonction pour construire la fin de la page
    fin_html();
    mysql_close($idcom2);
     
    ?>
    Cela renvois donc sur la page verifi id qui elle vérifie si oui ou non le Mot de passe est correct.
    En partant de ce site ci ( http://fr.html.net/tutorials/php/lesson12.php) j'ai donc cherché à affecté à la session un YES ou NO en fonction que si le mot de passe était bon ou non. Ce qui me donne ceci :

    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
    <?php
    //inclusion du fichier qui contient les fonctions
     
    include("../include/connexion.inc.php");
    include("../include/fonctions.inc.php");
     
     
    $idcom2=connexion("evaluation","parametre_connec");
     
    // Récupération des données saisies dans le formulaire d'accueil
    	$id=$_POST['id'];
    	$mdp=$_POST['mdp'];
     
     
    	// Requête de recherche du mot de passe et de l'id de l'utilisateur		
    		$req="SELECT * FROM utilisateurs WHERE id='$id' and mdp='$mdp'";
     
    	// Execution de la requête
    		$sql=mysql_query($req);
     
    		if (mysql_num_rows($sql)==0)
    			// La requête ne renvoie aucun résultat, l'id est inconnu
    			// et/ou le mot de passe est incorrect
    			{
    			session_start();
    			$_SESSION["id"] = "NO";
    			echo "Erreur de mot de passe ; <a href='index.php'>Identifiez-vous</a>";
    			}
    		else
    			// La requête renvoie au plus un résultat (le client recherché)
    			{
    			session_start();
    			$_SESSION["id"] = "YES";			
    			header('location: page.php');
    			}
     
    ?>
    Si le mot de passe est faux, j'ai bien le message que je souhaite. Si le mot de passe est correct je vais bien sur la page "page.php" dont voici le code

    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
    <?php
    // Start up your PHP Session
    	session_start();
     
    	// If the user is not logged in send him/her to the login form
    	if ($_SESSION["id"] = "NO") {
    	echo"blabla";
    	}
    	else {
     
     
     
    //inclusion du fichier qui contient les fonctions
    include("../include/fonctions.inc.php");
     
    //appel de la fonction pour construire le début de la page
    debut_html();
     
    if (isset ($_GET['num']))
    	{
    	$num = ($_GET['num']);
     
     
    //////////////////////////////////////
     
    include("../include/connexion.inc.php");
    $idcom2=connexion("evaluation","parametre_connec");
     
    //requete 
    $requete="SELECT `numero`, `titre`, `contenu` FROM `articles` WHERE `numero`=$num";
    $result=@mysql_query($requete,$idcom2);
     
    $nb_col=mysql_num_fields($result);
    $nb_ligne=mysql_num_rows($result);
     
     
    	$ligne=mysql_fetch_row($result);
    	for($j=0;$j<$nb_col;$j++)
    		$ligne[$j];	
    	$numero=$ligne[0];	
    	$titre=$ligne[1];
    	if (!isset($titre)) $titre="Ecrire votre titre";
    	$contenu=$ligne[2];
    	if (isset($contenu) || isset($titre)||isset($numero)) $remplacer=true;
    	else $remplacer=false;
     
     
     
    echo"		<form name='test' action='enregistrement.php?num=$num&&remplacer=$remplacer' method='POST'>
    				<input type='text' value='".$titre."' name='titre'>
    				<textarea  name='texte' cols='50' rows='20' id='myarea1' class='mceEditor'>";
    					if (isset($contenu)) echo $contenu;
    					echo "	
    				</textarea>
    				<input type='submit' value='Vérification des mises à jour'>
    			</form>";
    }
    else echo "selectionner un item du menu";
    //appel de la fonction pour construire la fin de la page
    fin_html();
    }
     
     
     
    ?>
    Or, à ce moment quand bien même que le mot de passe soit correct, la page ne s'affiche pas et le contenu de mon echo c'est à dire "bla la" s'affiche dans tous les cas même si le mot de passe est bon alors qu'il aurait du obtenir la variable de session YES.

    Pourquoi ? Comment puis-je faire ?

    Merci de votre aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Dans ton test, tu fait actuellement une affectation et non une comparaison :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION["id"] == "NO" //deux signe "égal" pour comparer

  3. #3
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2011
    Messages : 64
    Par défaut
    Merci de ta réponse.

    En effet ... cela fonctionne un peu mieux mais je continue à avoir une erreur qui est la suivante :

    Notice: Undefined index: id in C:\Ludovic\EasyPHP-DevServer-14.1VC9\data\localweb\projects\etape1_menu_javascript\administration\page.php on line 6
    Cependant la page s'affiche tout de même correctement en dessous de ce message d'erreur ...

    Ps : Le fichier page.php correspond à la dernière citation de code dans mon premier message.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Le message est on ne peu plus clair : $_SESSION['id'] n'existe pas.

    Fait un print_r($_SESSION) juste avant ton test pour voir ce que contient ta session.

  5. #5
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2011
    Messages : 64
    Par défaut
    En effet ... cela m'affiche

    Array ( )
    Donc je suppose qu'il n'y a rien ...

    j'ai rajouté ça à la ligne 13 de mon deuxième fichier mais cela ne change rien ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION["id1"] = $id1;
    Je vois pas trop ce qui bloque. Qu'est ce que je pourrais améliorer dans mon code pour que cela fonctionne ? ...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Vérifie déjà que les sessions fonctionnent normalement sur ton serveur avec un test tout simple :
    page1.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    session_start();
    $_SESSION['test'] = 'toto';
    header('Location: page2.php');
    page2.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session_start();
    echo 'session  : ' . $_SESSION['test'];
    N'oublie pas que l'extension mysql est obsolète et qu'au moins si tu l'utilises, il faut echapper les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	// Requête de recherche du mot de passe et de l'id de l'utilisateur		
    		$req="SELECT * FROM utilisateurs WHERE id='" . mysql_real_escape_string($_POST['id']) . "' and mdp='" . mysql_real_escape_string($_POST['mdp']) . "'";
     
    	// Execution de la requête
    		$sql=mysql_query($req);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Récupérer variable de session dans un bean
    Par thefutureisnow dans le forum Débuter avec Java
    Réponses: 15
    Dernier message: 25/11/2009, 09h19
  2. Récupérer une variable de session dans une Servlet
    Par Lazarey dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/03/2008, 11h46
  3. Affecter et récupérer une variable de session
    Par vhellers dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/08/2007, 17h57
  4. Affecter et récupérer une variable de session
    Par vhellers dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 16/08/2007, 15h15
  5. [WebForms][1.1]Récupérer des variables de session php en asp
    Par jwalter dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 26/11/2006, 14h49

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