Phpmysql, variable
Résolu
cinderela
Messages postés
52
Date d'inscription
Statut
Membre
Dernière intervention
-
cinderela Messages postés 52 Date d'inscription Statut Membre Dernière intervention -
cinderela Messages postés 52 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
J'aimerais faire référence à une variable que j'ai défini dans une page de index.php à accueil.php qui a été redirigé par veriflogin.php. Quand j'ai exécuté le script, et voilà il ne reconnait pas c'est quoi $username et $mpass dans accueil.php. Quelqu'un peut m'expliquer ?
index.php (formulaire)
veriflogin.php
accueil.php
Merci,
Cinderela
J'aimerais faire référence à une variable que j'ai défini dans une page de index.php à accueil.php qui a été redirigé par veriflogin.php. Quand j'ai exécuté le script, et voilà il ne reconnait pas c'est quoi $username et $mpass dans accueil.php. Quelqu'un peut m'expliquer ?
index.php (formulaire)
<form method="post" action="verifLogin.php"> <table boder="0" width="400" align="center"> <tr> <td width="200"><b>Username</b></td> <td width="200"> <input type="text" name="username"> </td> </tr> <tr> <td width="200"><b>Password</b></td> <td width="200"> <input type="password" name="mpass"> </td> </tr> <tr> <td colspan="2"><br><br> <input type="submit" name="submit" value="login"> </td> </tr> </table> </form>
veriflogin.php
<?php // on démarre la session $connexion = mysql_connect("localhost", "root", "") or die ("connexion au serveur impossible."); mysql_select_db('gestion_stock', $connexion); session_start(); $loginOK = false; // on n'effectue les traitement qu'à la condition que les informations aient été effectivement postées if ( isset($_POST) && (!empty($_POST['username'])) && (!empty($_POST['mpass'])) ) { extract($_POST); // je vous renvoie à la doc de cette fonction // on va chercher le mot de passe afférent à ce login $query = "SELECT * FROM tblemploye WHERE username = '".$username."' AND password ='".$mpass."' "; $resultat = mysql_query($query) or die('Erreur SQL : <br/>'.$query); // on vérifie que l'utilisateur existe bien if (mysql_num_rows($resultat) > 0) { while($data = mysql_fetch_assoc($resultat)) // on vérifie que son mot de passe est correct if ($_POST['mpass'] == $data['password']) { $loginOK = true; $nom = $data['nom']; $prenom = $data['prenom']; $role = $data['role_utilisateur']; } } } // si le login a été validé on met les données en sessions if ($loginOK) { $_SESSION['nom'] = $nom; $_SESSION['prenom'] = $prenom; $_SESSION['role'] = $role; header('location: accueil.php'); } else { echo ' une erreur est survenue, veuillez réessayer!'; } ?>
accueil.php
<H1> <TABLE BORDER="1"> <?php $connexion = mysql_connect("localhost", "root", "") or die ("connexion au serveur impossible."); mysql_select_db('gestion_stock', $connexion); $query = "SELECT role_utilisateur FROM tblemploye WHERE username = '".$_POST['username']."' AND password ='".$_POST['mpass']."' "; $resultat = mysql_query($query) or die ('Erreur. La requête ne peut pas être effectuée. L\'erreur retournée est : '.mysql_error()); if ($_SESSION['role'] == 'admin'){ echo' <TR><TD><a href="users.php">Users</a></TD></TR> <TR><TD><a href="stock_bas.php">Priorité</a></TD></TR> <TR><TD><a href="control.php">Contôles</a></TD></TR> <TR><TD><a href="fournisseur.php">Fournisseurs</a></TD></TR>';} else{if ($_SESSION['role'] == 'user'){ echo '<TR><TD><a href="priori.php">Priorité</a></TD></TR> <TR><TD><a href="control.php">Contôles</a></TD></TR> <TR><TD><a href="fournisseur.php">Fournisseurs</a></TD></TR>'; } } ?> </TABLE> </H1>
Merci,
Cinderela
A voir également:
- Phpmysql, variable
- Vba range avec variable ✓ - Forum VB / VBA
- Variable d'environnement temp ✓ - Forum Microsoft Office
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- Variable objet ou bloc "with" non définie - Forum VB / VBA
3 réponses
slt !
je recapitule !
On s'identifie grace a la page index.php.
un fois le formulaire validé, cette page appelle la page veriflogin.php chargé de faire les differents verifiacations ainsi que de selectionner les donnees de l'utilisateur dans la base de données.
Le probleme est qu'ensuite tu cherche a reutiliser les données entrées dans le formulaire de ton index mais ellles n'existent plus ( on va dire ça comme ça...)
par contre tu les a enregistrées garce a la variable superglobale $_SESSION, que tu peu reutiiliser a tout moment.
ton probleme est donc ta requete :
$query = "SELECT role_utilisateur FROM tblemploye WHERE username = '".$_POST['username']."' AND password ='".$_POST['mpass']."' ";
$_POST['username'] et $_POST['mpass'] ne sont plus la mais tu peu les remplacer par $_SESSION['nom'] et $_SESSION['mpass'] ( cette variable est a redefinir dans ta page veriflogin.php en mettant $_SESSION['mpass'] = $mpass; )
Voila en principe ça devrai fonctionner.
J'ai developpé le meme genre d'application et j'ai été confronté à ce genre d'erreur donc je m'y connais...enfin je pense ;-)
je recapitule !
On s'identifie grace a la page index.php.
un fois le formulaire validé, cette page appelle la page veriflogin.php chargé de faire les differents verifiacations ainsi que de selectionner les donnees de l'utilisateur dans la base de données.
Le probleme est qu'ensuite tu cherche a reutiliser les données entrées dans le formulaire de ton index mais ellles n'existent plus ( on va dire ça comme ça...)
par contre tu les a enregistrées garce a la variable superglobale $_SESSION, que tu peu reutiiliser a tout moment.
ton probleme est donc ta requete :
$query = "SELECT role_utilisateur FROM tblemploye WHERE username = '".$_POST['username']."' AND password ='".$_POST['mpass']."' ";
$_POST['username'] et $_POST['mpass'] ne sont plus la mais tu peu les remplacer par $_SESSION['nom'] et $_SESSION['mpass'] ( cette variable est a redefinir dans ta page veriflogin.php en mettant $_SESSION['mpass'] = $mpass; )
Voila en principe ça devrai fonctionner.
J'ai developpé le meme genre d'application et j'ai été confronté à ce genre d'erreur donc je m'y connais...enfin je pense ;-)
j'ai trouvé l'erreur !!
c'est dans ta page lien.php
la tu fai ton if ($_SESSION['role'] = 'admin')
eh bien il manque un "="
ce qui nous donne : if ($_SESSION['role'] == 'admin')
le = tout seul est une affectation et le == est une comparaison
c'est dans ta page lien.php
la tu fai ton if ($_SESSION['role'] = 'admin')
eh bien il manque un "="
ce qui nous donne : if ($_SESSION['role'] == 'admin')
le = tout seul est une affectation et le == est une comparaison
oui c'est ça que je voulais dire...
Content d'avoir été utile
sinon pour les liens le code est ecrit correctement dans tes deux messages alors je voi pas !
Verifie que tu n'a pas oublié un " ou ' quelquepart ou alors renvoie tout le code de ta page ...
Content d'avoir été utile
sinon pour les liens le code est ecrit correctement dans tes deux messages alors je voi pas !
Verifie que tu n'a pas oublié un " ou ' quelquepart ou alors renvoie tout le code de ta page ...
Salut,
c'est bon pour le lien. Il faut just que je mets <TABLE> </TABLE> dans le tag php.
et puis une autre chose. Je voulais qu'il affiche dans chaque page un lien qui est aussi avoir un accès restreint comme celui d'avance.
J'ai fait:
lien.php
Le souci est qu'il ne connait pas $_SESSION['mpass']. Tu as une idée? J'ai enlevé le bôucle While et ça marche pas non plus.
Note: dans chaque page j'ai mis : include('lien.php')
Merci :-)
c'est bon pour le lien. Il faut just que je mets <TABLE> </TABLE> dans le tag php.
et puis une autre chose. Je voulais qu'il affiche dans chaque page un lien qui est aussi avoir un accès restreint comme celui d'avance.
J'ai fait:
lien.php
<?php $connexion = mysql_connect("localhost", "root", "") or die ("connexion au serveur impossible."); mysql_select_db('gestion_stock', $connexion); $query = "SELECT role_utilisateur FROM tblemploye WHERE password = '".$_SESSION['mpass']."' "; $resultat = mysql_query($query) or die ('Erreur. La requête ne peut pas être effectuée. L\'erreur retournée est : '.mysql_error()); while ($data = mysql_fetch_row($resultat)){ if ($_SESSION['role'] = 'admin') { echo'<a href="accueil.php">Acceuil</a> <a href="users.php">page users</a> <a href="control.php">page control</a> <a href="fournisseur.php">page fournisseurs</a>'; } else{ if ($_SESSION['role'] == 'user') { echo ' <a href="priori.php">Priorité</a> <a href="control.php">Contôles</a> <a href="fournisseur.php">Fournisseurs</a>'; } } } ?>
Le souci est qu'il ne connait pas $_SESSION['mpass']. Tu as une idée? J'ai enlevé le bôucle While et ça marche pas non plus.
Note: dans chaque page j'ai mis : include('lien.php')
Merci :-)
en principe tu n'a pas besoin de re-executer ta requete
tu as juste besoin d'ecrire dans ta page lien.php le if :
et dans les autres pages tu fait juste ton "include('lien.php') " a l'endroit voulu
tu as juste besoin d'ecrire dans ta page lien.php le if :
if ($_SESSION['role'] = 'admin') { echo'<a href="accueil.php">Acceuil</a> <a href="users.php">page users</a> <a href="control.php">page control</a> <a href="fournisseur.php">page fournisseurs</a>'; } else{ if ($_SESSION['role'] == 'user') { echo ' <a href="priori.php">Priorité</a> <a href="control.php">Contôles</a> <a href="fournisseur.php">Fournisseurs</a>'; } } }
et dans les autres pages tu fait juste ton "include('lien.php') " a l'endroit voulu
Oups desolé je vien de me rendre compte d'un truc enorme que j'ai oublié !!!!
pour pouvoir utiliser les variables $_SESSION , il faut que dans chaque page qui les utilisent tu fasse un session_start();
cela signifie que tu indique au script que tu souhaite recuperer les variables de session.
Donc par exemple la premiere ligne de ta page accueil.php doit etre <?php session_start();
?>
pour pouvoir utiliser les variables $_SESSION , il faut que dans chaque page qui les utilisent tu fasse un session_start();
cela signifie que tu indique au script que tu souhaite recuperer les variables de session.
Donc par exemple la premiere ligne de ta page accueil.php doit etre <?php session_start();
?>
Merci beaucoup! c'est fonctionné!
voilà il faut just mettre comme tu disais redéfinir $_SSESION['mpass'] = $mpass dans veriflogin.php.
puis j'ai essayé de changé
à
En tout cas, comme ça , ça marche. Est-ce que c'est cela que tu voulais me dire? d'autrement je vois pas.
Sinon, i l y a une autre problème que l'affichage du page accueil.php pour :
<TR><TD><a href="users.php">Users</a></TD></TR>
et
<TR><TD><a href="stock_bas.php">Priorité</a></TD></TR>
n'est pas comme un lien. sais pas pourquoi!
A+
Cinderela