Phpmysql, variable

Résolu/Fermé
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008 - 15 août 2007 à 17:47
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008 - 16 août 2007 à 16:29
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)

<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

3 réponses

absurdsystem Messages postés 117 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 28 août 2008 50
16 août 2007 à 00:56
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 ;-)
1
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008
16 août 2007 à 08:44
Salut!

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é

$query = "SELECT role_utilisateur FROM tblemploye WHERE username = '".$_POST['username']."' AND password ='".$_POST['mpass']."' "; 


à

$query = "SELECT role_utilisateur FROM tblemploye WHERE password ='".$_SESSION['mpass']."' "; 



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
0
absurdsystem Messages postés 117 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 28 août 2008 50
16 août 2007 à 16:03
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
1
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008
16 août 2007 à 16:29
ah oui, c'est vrai :-) pourquoi je suis si négligée . merci bcp
0
absurdsystem Messages postés 117 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 28 août 2008 50
16 août 2007 à 11:19
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 ...
0
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008
16 août 2007 à 14:44
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

<?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&ecirc;te ne peut pas &ecirc;tre effectu&eacute;e. L\'erreur retourn&eacute;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&eacute;</a>
			<a href="control.php">Cont&ocirc;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 :-)
0
absurdsystem Messages postés 117 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 28 août 2008 50 > cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008
16 août 2007 à 15:10
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 :
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&eacute;</a>
			<a href="control.php">Cont&ocirc;les</a>
			<a href="fournisseur.php">Fournisseurs</a>';
				}
			}
}


et dans les autres pages tu fait juste ton "include('lien.php') " a l'endroit voulu
0
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008 > absurdsystem Messages postés 117 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 28 août 2008
16 août 2007 à 15:17
Salut,
oui, je l'ai fait comme t'as dit à tout à l'heure puis il me donne les liens pour l' admin même si je me loge avec le compt user

A+
cinderela
0
absurdsystem Messages postés 117 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 28 août 2008 50 > cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008
16 août 2007 à 15:29
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();
?>
0
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008 > absurdsystem Messages postés 117 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 28 août 2008
16 août 2007 à 15:38
Salut,

en fait, chaque page que je voulais include le lien.php j'ai déjà mis include (session.php) avant et je t'avais pas dit, désolée pour ça!
0