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 :

Problème de SESSION avec les "pseudo-frame" PHP


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut Problème de SESSION avec les "pseudo-frame" PHP
    Bonsoir à tous,
    voila je développe un site avec une interface ADMIN.
    j'utilise des psodos frame pour chargé en include mes pages demandés.
    donc losque l'admin se connecte, le login "root" se met dans la session login.

    Mon problème est que l'osqu'un user de base essai de participer à un sondage (seul action autorisé) la page n'aboutit pas et il se connect en admin directement.

    PS: je destroy bien les sessions a la déconnexion.

    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
    if (isset($_SESSION['UTILISATEUR']['LOGIN'])=="root")
    						{
    						$pageOK = array('visio' => 'visio.php',
    									    'particip' => 'particip.php',
    										'contact' => 'contact.php',
    										'recherche' => 'recherche.php',
    										'creation' => 'ADMIN/creation.php',
    										'modif' => 'ADMIN/modif.php',
    										'prevu' => 'ADMIN/prevu.php',
    										'stats' => 'ADMIN/stats.php');
     
    						$actionOK = array('supprimer' => 'supprimer');
    						}
    				else {
    			  			$pageOK = array('visio' => 'visio.php',
    										'checklogin' => 'checklogin.php',
    									    'particip' => 'particip.php',
    										'recherche' => 'recherche.php',
    									    'contact' => 'contact.php');
    					}


    Certaines pages peuvent être vu par Les users de base et l admin.

    Merci bien

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Bonsoir.
    Pour la bonne et simple raison que n'importe quel utilisateur identifié sera toujours considéré comme 'root' avec ce code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (isset($_SESSION['UTILISATEUR']['LOGIN'])=="root")
    donnera toujours comme résultat TRUE, dès qu'un utilisateur est identifié, peu importe qu'il soit 'root' ou simple user.
    Il vaut mieux éviter de faire des raccourcis qui peuvent avoir un résultat indésirable. Faites comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(isset($_SESSION['UTILISATEUR']['LOGIN']) && ($_SESSION['UTILISATEUR']['LOGIN'] == "root")

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    J'ai testé mais sans succès :s

    et j'ai mis çà au début de mon index.php:

    <?php
    session_start();
    $_SESSION['UTILISATEUR']['LOGIN']=true;
    ?>

    et je fait mais if avec t as formule.

    Malheureusement, j'ai toujours la même erreur.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    je rectif mon message, :

    en mettant juste au début de mon index:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    session_start();
    ?>
    Maintenant le script respect le login root, mais mon formulaire n'aboutit toujours pas.

    Je précise, lors de l'action de mon premier formulaire de la page A vers la page B, tout marche bien, mais dès que je veux faire une action dans la page elle-même, donc B (avec action=index.php?page=B et un isset) ma protection doit empêché le script d'aboutir.

    Pourtant j'ai fait une protection sur les méthode GET et le fait de donner une action=index.php?page=B en POST doit peut être poser problème ?

    Si quelqu'un a déjà eu se genre de problème

    Merci de vos réponses

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Bonsoir,

    Je ne comprends pas ce que tu entends par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['UTILISATEUR']['LOGIN']=true;
    Tu veux modifier le login en bool ? Ça ne veut rien dire (dans ce contexte, en tout cas).
    Normalement, avec ton code de départ, mais juste en modifiant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_SESSION['UTILISATEUR']['LOGIN'])=="root")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_SESSION['UTILISATEUR']['LOGIN']) && ($_SESSION['UTILISATEUR']['LOGIN'] == "root")
    $pageOK devrait avoir la valeur attribuée aux utilisateurs non root

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Oui c'est ce que je viens de faire,
    Désolé j'étais en train de porter une information supplémentaire à mon post

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Hum.
    D'abord, il vaut mieux faire simple : soit on fait du GET, soit on fait du POST. Mélanger les deux n'est pas une bonne idée, ça peut marcher maintenant, mais on ne sait pas si les futurs navigateurs accepteront de mélanger les deux.

    Peux-tu montrer ton code ? Il y a peut-être un conflit, vu que tu déclares une soumission en POST et que tu transfères une requête en GET.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Mais est il déconseillé d'utiliser des psodo-Frame avec des formulaires méthodes POST ?

    Je pense que le problème se produit que lorsque je fais une action dans la page elle même.

    Autrement voici mon code : (ca va être long bien que simplifier) - Problème en fin de page.

    index.php :
    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
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    <?php
    session_start();
    ?>
    <head>
    	<title>Sondage à toutes ages !</title>
    	<link rel="stylesheet" type="text/css" href="css/styles.css" />
    <?php
    require_once ("MDB2.php");
    require_once ("Connect.php");
    require_once ("Connexion.php");
    require_once ("ExecRequete.php");
     
    ?></head>
    <body onunload="window.history.forward();">
    <!-- wrap starts here -->
     <div id="wrap">
     
    	<div id="top-bg"></div>
     
    	<!--header ends-->					
    	</div>
    	<br />
    	<!--<div id="header-photo"></div>-->	
     
    	<!-- navigation starts-->	
    	<div id="menu">
    		<ul>
    			<li id="current"><a href="#">Home</a></li>
    			<li><a href="#">Products</a></li>
    			<li><a href="#">Services</a></li>
    			<li><a href="#">Support</a></li>
    			<li><a href="#">Contact</a></li>
    			<li><a href="#">About</a></li>		
    		</ul>
    	<!-- navigation ends-->	
    	</div>					
    	<!-- content-wrap starts -->
    	<div id="content-wrap">
     
    	<div id="sidebar">
    		<h1>Connexion ADMIN</h1>
    		<?php
    		if(isset($_SESSION['UTILISATEUR']['LOGIN']) && ($_SESSION['UTILISATEUR']['LOGIN'] == "root"))
    			{
    			echo 'Bonjour Admin !';
    			echo '<br><a href="ADMIN/index_admin.php">Administration</a>';
    			echo '<br><a href="logout.php">déconnexion</a>';
    			}
    		else
    			{
    			echo '
    			<form name="login" method="post" action="index.php?page=checklogin">
    			<dl>
    				<dt>Utilisateur
    				<input name="myusername" type="text" id="myusername" size="10"></dt>
    			</dl>
    			<dl>
    				<dt>Password
    				<input name="mypassword" type="password" id="mypassword" size="10"></dt>
    			</dl>
    			<br>
    			<dl>
    				<dt><input type="submit" name="Submit" value="Connexion"></dt>
    			</dl>			
    			
    			';
    				}
    			?>
     
    			<h1>Links</h1>
    			<ul class="sidemenu">
    				<?php
    				if(isset($_SESSION['UTILISATEUR']['LOGIN']) && ($_SESSION['UTILISATEUR']['LOGIN'] != "root"))
    					{					
    					echo '
    					<li><a href="index.php?page=visio" title="Visio">Visio</a></li>
    					<li><a href="index.php?page=recherche" title="Recherche">Chercher un sondage</a></li>
    					<li><a href="./index.php">Retour Index</a></li>';
    					}
    				else {
    					echo '
    					<li><a href="index.php?page=creation" title="Création de sondage">Créer un sondage</a></li>
    					<li><a href="index.php?page=stats" title="Statistiques des réponses">Statistiques</a></li>
    					<li><a href="index.php?page=modif" title="Modification d\'un sondage">Modifier un sondage</a></li>
    					<li><a href="index.php?page=recherche" title="Recherche">Chercher un sondage</a></li>
    					<li><a href="index.php?page=visio" title="Participé !">Retour Index</a></li>';
    					}
    				?>
    			</ul>
    	</div>
     
    		<div id="main">
    		<p>
    			<?php
    				//echo '<br>'.$_SESSION['UTILISATEUR']['LOGIN'].'<br>';
    				//echo '<hr>';
     
     
    			  // On dfinit le tableau contenant les pages autorises
    			  // ----------------------------------------------------
    				if(isset($_SESSION['UTILISATEUR']['LOGIN']) && ($_SESSION['UTILISATEUR']['LOGIN'] == "root"))
    						{
    						$pageOK = array('visio' => 'visio.php',
    									    'particip' => 'particip.php',
    										'contact' => 'contact.php',
    										'recherche' => 'recherche.php',
    										'creation' => 'ADMIN/creation.php',
    										'modif' => 'ADMIN/modif.php',
    										'prevu' => 'ADMIN/prevu.php',
    										'stats' => 'ADMIN/stats.php');
     
    						$actionOK = array('supprimer' => 'supprimer');
    						}
    				else {
    			  			$pageOK = array('visio' => 'visio.php',
    										'checklogin' => 'checklogin.php',
    									    'particip' => 'particip.php',
    										'recherche' => 'recherche.php',
    									    'contact' => 'contact.php');
    					}
     
    			  // On teste que le paramtre d'url existe et qu'il est bien autorisé
    			  // -----------------------------------------------------------------
     
    			  if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) && (isset($_GET['action'])) && (isset($actionOK[$_GET['action']])) && (isset($_GET['id_ques'])) && (isset($_GET['id_sond'])) && (isset($_GET['intitule'])) && (isset($_GET['date_crea'])) && (isset($_GET['date_close'])) ) {
     
    				//Connexion a la base !
    				$connexion = Connexion(NOM,PASSE,BASE,SERVEUR);
     
    				$requete="DELETE FROM participation WHERE id_ques='".$_GET['id_ques']."';";
    				$resultat = Execrequete($requete,$connexion);
    				$requete="DELETE FROM reponse WHERE id_ques='".$_GET['id_ques']."';";
    				$resultat = Execrequete($requete,$connexion);
    				$requete="DELETE FROM question WHERE id_ques='".$_GET['id_ques']."';";
    				$resultat = Execrequete($requete,$connexion);
    				$requete="UPDATE sondage SET nb_ques = nb_ques-1 WHERE id_sond = '".$_GET['id_sond']."';";
    				$resultat = Execrequete($requete,$connexion);
     
    				$_POST['modifier']='Modifier';
    				$_POST['id_sond']=$_GET['id_sond'];
    				$_POST['id_ques']=$_GET['id_ques'];
    				$_POST['intitule']=$_GET['intitule'];
    				$_POST['date_crea']=$_GET['date_crea'];
    				$_POST['date_close']=$_GET['date_close'];
    				$_POST['nb_ques']=$_GET['nb_ques']-1;
    				echo 'LE GET SA PASSE !!!!!!!!!';
    				} 
     
     
    			  //if ( (isset($_GET['page'])) ) {
    			  if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
    					include($pageOK[$_GET['page']]);   // Nous appelons le contenu central de la page
    					} 
    			  else include('visio.php');   // Page par dfaut quant elle n'existe pas dans le tableau
     
     
    			?>
    			</p>
    		</div>
     
    	<!-- content-wrap ends-->	
    	</div>
    </div>
     
    </body></html>
    Le code ma page de visualisation qui marche nikel (oui je fait un site de sondage):

    visio.php :
    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
    <?php
    //Connexion a la base !
    $connexion = Connexion(NOM,PASSE,BASE,SERVEUR);
     
    $requete=("SELECT * FROM sondage;");
     
    echo '<table border="1">';
    echo '<tr><th width="60%">Sondage</th><th width="20%">Date de fermeture</th><th width="10%">Questions</th><th width="10%">Action</th></tr>';
     
    $resultat = $connexion->queryAll($requete);
     
    foreach ($resultat as $val)
    {
    echo '<tr><td valign="middle" align="left">'.$val[0].' / '.$val[1].'</td>
    		<td valign="middle" align="center">'.$val[3].'</td>
    		<td valign="middle" align="center">'.$val[4].'</td>';
     
    echo '<form method="post" name="particip" action="index.php?page=particip">';
    echo '<input type="hidden" name="id_sond" value="'.$val[0].'" />';
    echo '<input type="hidden" name="intitule" value="'.$val[1].'" />';
    echo '<input type="hidden" name="date_crea" value="'.$val[2].'" />';
    echo '<input type="hidden" name="date_close" value="'.$val[3].'" />';
    echo '<input type="hidden" name="nb_ques" value="'.$val[4].'" />';
    echo '<td valign="middle" align="center"><input type="submit" name="participer" value="Participer" /> </td></tr>';
    echo '</form>';
    	}
    echo '</table>';
    ?>
    Jusque la le formulaire marche soit en simple user et en admin

    Le code de traitement, qui lui ne trait quand admin (l'action qui est dans le même formulaire ne marche pas :s )

    particip.php :
    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
    //Connexion a la base !
    $connexion = Connexion(NOM,PASSE,BASE,SERVEUR);
     
    if (isset($_POST['participer']))
    	{
    	echo '<p>';
    	echo '<form method="post" name="consult" action="index.php?page=particip">';
    	echo 'Sondage : '.$_POST['intitule'].'';
    	echo '<br> Crée le : '.$_POST['date_crea'].'';
    	echo '<br> Cloturé le : '.$_POST['date_close'].'';
    	echo '<br> NB Ques : '.$_POST['nb_ques'].'';
    	echo '<p>';
    	//Cration de l'id_ques------------------------------------
    	$requete=("SELECT * FROM question WHERE id_sond='".$_POST['id_sond']."';");
    	$resultat = $connexion->queryAll($requete);
    	if (MDB2::isError($resultat)) echo 'Sondage vide !!!';
    ...
     
    // le traitement dans la même page qui pose problème :
    if(isset($_POST['V_reponse']))
    	{
    	print_r($_POST);
    	echo '<p>';
     
    	$connexion = Connexion(NOM,PASSE,BASE,SERVEUR);
    	$requete=("SELECT * FROM participation ORDER BY id_part DESC;");
    	$resultat = $connexion->queryRow($requete);
    	if (MDB2::isError($resultat)) $id_part=1;
    	else $id_part = $resultat[0] + 1;
    	echo '<br> '.$id_part.' ';

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Houla !
    C'est long, effectivement
    Oublie ce que j'ai dit à propos du GET et du POST. Je viens de comprendre que tu te sers d'index.php pour router.

    Bon, si je comprends bien, index.php et visio.php ne posent pas problème ? (c'est bien, ça m'évitera de les lire ).

    Quant à particip.php, d'abord , est-ce que tu vois V_reponse dans ton print_r($_POST) ? Ou est-ce que cette partie (commençant par if) ne s'exécute même pas ?

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut La honte sur moi
    Je vient de trouver la source du problème !

    Bon ben je vous informe que je suis vraiment le Most des Boulets

    j'avais oublier de refermé la balise </form> de mon formulaire de connexion a droite de mon site....

    donc pour chaque formulaire chargé la connexion s'enclenchait !


    Bon ben si vs trouvé tout de même se poste utile, laisse le,
    sinon vous pouvez le bruler !

    merci et désolé pour ceux qui ont passé du temps

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    LOL
    ça arrive.

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

Discussions similaires

  1. Problème de session avec les JSP/Servlet
    Par FuneralRose dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 02/06/2012, 10h28
  2. Problème de session avec les Browser Iexplorer
    Par Andry dans le forum Langage
    Réponses: 2
    Dernier message: 16/07/2008, 08h10
  3. Problème de syntaxe avec les session
    Par kuja2053 dans le forum Langage
    Réponses: 2
    Dernier message: 07/08/2007, 00h10
  4. Réponses: 5
    Dernier message: 18/10/2006, 16h20

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