Variables de session et requêtes SQL
Fermé
XecK
Messages postés
386
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
26 août 2016
-
27 févr. 2013 à 11:55
Utilisateur anonyme - 5 mars 2013 à 08:40
Utilisateur anonyme - 5 mars 2013 à 08:40
A voir également:
- Variables de session et requêtes SQL
- Teamviewer code de session expiré ✓ - Forum Windows XP
- Requête sql date supérieure à ✓ - Forum Programmation
- Nos systèmes ont détecté un trafic exceptionnel sur votre réseau informatique. cette page permet de vérifier que c'est bien vous qui envoyez des requêtes, et non un robot ✓ - Forum Virus
- Sql lister les tables ✓ - Forum Programmation
5 réponses
Utilisateur anonyme
27 févr. 2013 à 13:26
27 févr. 2013 à 13:26
Bonjour
Je doute fort que des requêtes SQL aient le pouvoir de modifier des variables de session.
Peux-tu donner le code complet de la page qui a le problème (en cachant les mots de passe bien sûr)
Je doute fort que des requêtes SQL aient le pouvoir de modifier des variables de session.
Peux-tu donner le code complet de la page qui a le problème (en cachant les mots de passe bien sûr)
XecK
Messages postés
386
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
26 août 2016
54
28 févr. 2013 à 17:43
28 févr. 2013 à 17:43
Ça va vraiment pas être digeste, mais soit, voilà une page qui bug, sachant qu'ici, les variables de sessions ont été renommées afin de faire disparaître le bug (st=statut, dr=droit, etc) :
membre.php :
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="fr" >
<head>
<meta charset="UTF-8" />
<title>Membre</title>
<link rel="stylesheet" type="text/css" href="/style.css" />
<link rel="shortcut icon" href="/images/logo_petit.ico" />
</head>
<body>
<?php
require_once("/XXXXXXXXX/mise_en_page/menu.inc.php");
require_once("/XXXXXXXXX/mise_en_page/tete.inc.php");
require_once("membre.inc.php");
?>
</body>
</html>
membre.inc.php :
<div id="contenu">
<div>
<?php
try
{
$bdd = new PDO(XXXXXXXXXXXX);
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$id=$_GET['id'];
$reponse = $bdd->prepare('SELECT * FROM Adherent WHERE id = :id');
$reponse->execute(array('id' => $id));
echo "<form method=\"post\" action=\"membre.action.php?id=$id\">\n<fieldset>\n\t<legend>Modifier le membre :</legend>\n";
while ($donnees = $reponse->fetch())
{
$nom=utf8_encode($donnees['nom']);
$prenom=utf8_encode($donnees['prenom']);
$statut=utf8_encode($donnees['statut']);
$mail=utf8_encode($donnees['mail']);
$mdp=utf8_encode($donnees['mdp']);
$telfixe=$donnees['telfixe'];
$telportable=$donnees['telportable'];
$droit=$donnees['droit'];
}
$reponse->closeCursor();
echo "\t<label for=\"nom\">Nom :</label>\n\t<input type=\"text\" name=\"no\" id=\"no\" value=\"$nom\" />\n\t<br />\n";
echo "\t<label for=\"prenom\">Prénom :</label>\n\t<input type=\"text\" name=\"pr\" id=\"pr\" value=\"$prenom\" />\n\t<br />\n";
echo "\t<label for=\"statut\">Statut :</label>\n\t<input type=\"text\" name=\"st\" id=\"st\" value=\"$statut\" />\n\t<br />\n";
echo "\t<label for=\"mail\">Mail :</label>\n\t<input type=\"text\" name=\"ma\" id=\"ma\" value=\"$mail\" />\n\t<br />\n";
echo "\t<label for=\"mdp\">Mot de passe :</label>\n\t<input type=\"text\" name=\"md\" id=\"md\" value=\"$mdp\" />\n\t<br />\n";
echo "\t<label for=\"telfixe\">Téléphone fixe :</label>\n\t<input type=\"text\" name=\"tf\" id=\"tf\" value=\"$telfixe\" />\n\t<br />\n";
echo "\t<label for=\"telportable\">Téléphone portable :</label>\n\t<input type=\"text\" name=\"tp\" id=\"tp\" value=\"$telportable\" />\n\t<br />\n";
if($droit==TRUE)
echo "\t<label for=\"droit\">Droits d'admin :</label>\n\tOui<INPUT type=radio name=\"dr\" value=\"TRUE\" checked=\"checked\">Non<INPUT type=radio name=\"dr\" value=\"FALSE\" >\n\t<br />\n";
else
echo "\t<label for=\"droit\">Droits d'admin :</label>\n\tOui<INPUT type=radio name=\"dr\" value=\"TRUE\">Non<INPUT type=radio name=\"dr\" value=\"FALSE\" checked=\"checked\" >\n\t<br />\n";
echo "</fieldset>\n<p>\n\t<input type=\"submit\" value=\"Enregistrer\" />\n</p>";
?>
</div>
</div>
menu.inc.php :
<div id="menu"> <!--Menu-->
<ul>
<li><a href="/index.php">Accueil</a></li>
<li><a href="/general/description.php">Qui sommes nous ?</a></li>
<li><a href="/general/acces.php">Accès</a></li>
<li><a href="/spectacle/spectacles.php">Spectacles</a></li>
<?php
if(isset($_SESSION['st']))
echo "<li><a href=\"/general/membres.php\">Membres</a></li>\n";
?>
</ul>
</div>
<?php
if(isset($_SESSION['dr']) && $_SESSION['dr']==TRUE)
{
echo "<div id=\"menu_admin\">\n\t<ul>\n\t\t<li><a href=\"/admin/spectacles.php\">Spectacles</a></li>\n\t\t<li><a href=\"/admin/membres.php\">Membres</a></li>\n\t</ul>\n</div>\n";
}
?>
tete.inc.php :
<div id="tete"> <!--Entête-->
<img src="/images/logo.png" alt="logo" />
<?php
if (isset($_SESSION['st']))
{
echo "<a href=\"/connexion/deconnexion.action.php\">Se deconnecter</a>";
}
else
{
echo "<a href=\"/connexion/connexion.php\">Se connecter</a>";
}
?>
<h1> XXXXXXXXXXX </h1>
<?php
if (isset($_SESSION['st']))
{
echo "<br /><p>Utilisateur : ",$_SESSION['pn']," ",$_SESSION['nm']," connecte en tant que ",$_SESSION['st'],"</p>";
}
?>
</div>
membre.php :
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="fr" >
<head>
<meta charset="UTF-8" />
<title>Membre</title>
<link rel="stylesheet" type="text/css" href="/style.css" />
<link rel="shortcut icon" href="/images/logo_petit.ico" />
</head>
<body>
<?php
require_once("/XXXXXXXXX/mise_en_page/menu.inc.php");
require_once("/XXXXXXXXX/mise_en_page/tete.inc.php");
require_once("membre.inc.php");
?>
</body>
</html>
membre.inc.php :
<div id="contenu">
<div>
<?php
try
{
$bdd = new PDO(XXXXXXXXXXXX);
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$id=$_GET['id'];
$reponse = $bdd->prepare('SELECT * FROM Adherent WHERE id = :id');
$reponse->execute(array('id' => $id));
echo "<form method=\"post\" action=\"membre.action.php?id=$id\">\n<fieldset>\n\t<legend>Modifier le membre :</legend>\n";
while ($donnees = $reponse->fetch())
{
$nom=utf8_encode($donnees['nom']);
$prenom=utf8_encode($donnees['prenom']);
$statut=utf8_encode($donnees['statut']);
$mail=utf8_encode($donnees['mail']);
$mdp=utf8_encode($donnees['mdp']);
$telfixe=$donnees['telfixe'];
$telportable=$donnees['telportable'];
$droit=$donnees['droit'];
}
$reponse->closeCursor();
echo "\t<label for=\"nom\">Nom :</label>\n\t<input type=\"text\" name=\"no\" id=\"no\" value=\"$nom\" />\n\t<br />\n";
echo "\t<label for=\"prenom\">Prénom :</label>\n\t<input type=\"text\" name=\"pr\" id=\"pr\" value=\"$prenom\" />\n\t<br />\n";
echo "\t<label for=\"statut\">Statut :</label>\n\t<input type=\"text\" name=\"st\" id=\"st\" value=\"$statut\" />\n\t<br />\n";
echo "\t<label for=\"mail\">Mail :</label>\n\t<input type=\"text\" name=\"ma\" id=\"ma\" value=\"$mail\" />\n\t<br />\n";
echo "\t<label for=\"mdp\">Mot de passe :</label>\n\t<input type=\"text\" name=\"md\" id=\"md\" value=\"$mdp\" />\n\t<br />\n";
echo "\t<label for=\"telfixe\">Téléphone fixe :</label>\n\t<input type=\"text\" name=\"tf\" id=\"tf\" value=\"$telfixe\" />\n\t<br />\n";
echo "\t<label for=\"telportable\">Téléphone portable :</label>\n\t<input type=\"text\" name=\"tp\" id=\"tp\" value=\"$telportable\" />\n\t<br />\n";
if($droit==TRUE)
echo "\t<label for=\"droit\">Droits d'admin :</label>\n\tOui<INPUT type=radio name=\"dr\" value=\"TRUE\" checked=\"checked\">Non<INPUT type=radio name=\"dr\" value=\"FALSE\" >\n\t<br />\n";
else
echo "\t<label for=\"droit\">Droits d'admin :</label>\n\tOui<INPUT type=radio name=\"dr\" value=\"TRUE\">Non<INPUT type=radio name=\"dr\" value=\"FALSE\" checked=\"checked\" >\n\t<br />\n";
echo "</fieldset>\n<p>\n\t<input type=\"submit\" value=\"Enregistrer\" />\n</p>";
?>
</div>
</div>
menu.inc.php :
<div id="menu"> <!--Menu-->
<ul>
<li><a href="/index.php">Accueil</a></li>
<li><a href="/general/description.php">Qui sommes nous ?</a></li>
<li><a href="/general/acces.php">Accès</a></li>
<li><a href="/spectacle/spectacles.php">Spectacles</a></li>
<?php
if(isset($_SESSION['st']))
echo "<li><a href=\"/general/membres.php\">Membres</a></li>\n";
?>
</ul>
</div>
<?php
if(isset($_SESSION['dr']) && $_SESSION['dr']==TRUE)
{
echo "<div id=\"menu_admin\">\n\t<ul>\n\t\t<li><a href=\"/admin/spectacles.php\">Spectacles</a></li>\n\t\t<li><a href=\"/admin/membres.php\">Membres</a></li>\n\t</ul>\n</div>\n";
}
?>
tete.inc.php :
<div id="tete"> <!--Entête-->
<img src="/images/logo.png" alt="logo" />
<?php
if (isset($_SESSION['st']))
{
echo "<a href=\"/connexion/deconnexion.action.php\">Se deconnecter</a>";
}
else
{
echo "<a href=\"/connexion/connexion.php\">Se connecter</a>";
}
?>
<h1> XXXXXXXXXXX </h1>
<?php
if (isset($_SESSION['st']))
{
echo "<br /><p>Utilisateur : ",$_SESSION['pn']," ",$_SESSION['nm']," connecte en tant que ",$_SESSION['st'],"</p>";
}
?>
</div>
Utilisateur anonyme
28 févr. 2013 à 18:10
28 févr. 2013 à 18:10
Ça aurait été plus clair si tu avais utilisé la balise code...
Pourquoi dis-tu que " les variables de session prennent pour valeur cet adhérent" ?
Qu'écris-tu, où cliques-tu, que se passe-t-il et quelle est la différence avec ce que tu attendais ?
Car si je vois des anomalies dans ton code, aucune n'a de rapport avec les variables de session.
Pourquoi dis-tu que " les variables de session prennent pour valeur cet adhérent" ?
Qu'écris-tu, où cliques-tu, que se passe-t-il et quelle est la différence avec ce que tu attendais ?
Car si je vois des anomalies dans ton code, aucune n'a de rapport avec les variables de session.
XecK
Messages postés
386
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
26 août 2016
54
1 mars 2013 à 10:56
1 mars 2013 à 10:56
Désolés pour la balise code, je connaissais pas -_-
Si je charge la page, elle va sélectionner l'adhérent correspondant à l'identifiant envoyé grâce à la méthode GET, et remplir la page avec son contenu, dès que je changerai de page, en actionnant un bouton du menu par exemple, mes variables $_SESSION['prenom'], $_SESSION['nom'], $_SESSION['statut'] et $_SESSION['droit'] vont prendre pour valeur le nom, le prénom, le statut et le droit de cet adhérent. En ayant enlevé plusieurs bouts du code, j'ai put constater que c'étais l'utilisation de $donnees et/ou while ($donnees = $reponse->fetch()) qui faisais ça, mais pourquoi ?
Si je charge la page, elle va sélectionner l'adhérent correspondant à l'identifiant envoyé grâce à la méthode GET, et remplir la page avec son contenu, dès que je changerai de page, en actionnant un bouton du menu par exemple, mes variables $_SESSION['prenom'], $_SESSION['nom'], $_SESSION['statut'] et $_SESSION['droit'] vont prendre pour valeur le nom, le prénom, le statut et le droit de cet adhérent. En ayant enlevé plusieurs bouts du code, j'ai put constater que c'étais l'utilisation de $donnees et/ou while ($donnees = $reponse->fetch()) qui faisais ça, mais pourquoi ?
Utilisateur anonyme
1 mars 2013 à 11:22
1 mars 2013 à 11:22
Deux questions :
En relisant bien ton message, si j'ai bien compris, le code que tu as donné hier à 17:43 n'a pas le bug ? Il y a donc peu de chance que je le trouve, s'il n'y est pas !
Peux-tu donner le code avec bug ?
Peux-tu donner le code de la page qui appelle membre.php avec la méthode GET ?Ce ne serait pas plutôt là que tes variables de session sont altérées ?
En relisant bien ton message, si j'ai bien compris, le code que tu as donné hier à 17:43 n'a pas le bug ? Il y a donc peu de chance que je le trouve, s'il n'y est pas !
Peux-tu donner le code avec bug ?
Peux-tu donner le code de la page qui appelle membre.php avec la méthode GET ?Ce ne serait pas plutôt là que tes variables de session sont altérées ?
XecK
Messages postés
386
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
26 août 2016
54
5 mars 2013 à 07:02
5 mars 2013 à 07:02
Cette page n'est pas buggée, mais si on remplace $_SESSION['st'] par $_SESSION['statut'], $_SESSION['dr'] par $_SESSION['droit'], etc, elle l'est.
Ce n'est pas la méthode GET qui fais bug, dans une autre page je parcours toute ma table, les variables de sessions prennent la valeur de la dernière ligne consultée avec $donnees = $reponse->fetch(), c'est pourquoi je me demande si cette méthode n'utiliserai pas les variables de sessions (étrange, mais ça expliquerais mes problèmes)
Ce n'est pas la méthode GET qui fais bug, dans une autre page je parcours toute ma table, les variables de sessions prennent la valeur de la dernière ligne consultée avec $donnees = $reponse->fetch(), c'est pourquoi je me demande si cette méthode n'utiliserai pas les variables de sessions (étrange, mais ça expliquerais mes problèmes)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
5 mars 2013 à 08:40
5 mars 2013 à 08:40
Non, fetch n'a absolument aucun rapport avec les variables de session, il n'y a aucun doute là-dessus.
Tes variables $_SESSION sont modifiées ailleurs que dans le code que tu nous montres, mais libre à toi de ne pas montrer ce que je t'ai demandé.
Tes variables $_SESSION sont modifiées ailleurs que dans le code que tu nous montres, mais libre à toi de ne pas montrer ce que je t'ai demandé.