Page 1 sur 1

recuperation login dans formulaire

Posté : 29 janv. 2011, 11:42
par n1cklas06
Bonjour tout le monde,


j'ai une page login.php servant d'authentification pour accéder à ma page index.php

Or je voudrais utiliser soit le login soit le password dans la page index.php pour insérer dans mon formulaire son Nom et prénom ainsi que son adresse email grâce à la requête suivante :

$req = mysql_query("SELECT nom_prenom,email_recept FROM CONTACTS where login like '".$login."%'");

(la requête fonctionne bien sous mysql si je remplace ".$login." par une valeur existante dans ma table CONTACTS.)


voici mon problème:

j'ai beau insérer le code suivant avant ma requête mais rien n'est posté, ni même affiché :

$login = htmlentities($_POST['login']);
echo $login;

voici le code source de ma page login.php
<?php
include("_connexion.php");

// on teste si le receptionniste a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['password']) && !empty($_POST['password']))) {

		

		// on teste si une entrée de la base contient ce couple login / password
		
		$sql = 'SELECT count(*) FROM CONTACTS WHERE login="'.mysql_escape_string($_POST['login']).'" AND password="'.mysql_escape_string($_POST['password']).'"';
		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
		$data = mysql_fetch_array($req);

		mysql_free_result($req);
		mysql_close();

		// si on obtient une réponse, alors l'utilisateur est enregistré
		if ($data[0] == 1) {
			session_start();
			$_SESSION['login'] = $_POST['login'];
			header('Location: index.php');
			exit();
		}
		// si on ne trouve aucune réponse, le receptionniste s'est trompé soit dans son login, soit dans son mot de passe
		elseif ($data[0] == 0) {
			$erreur = 'Compte non reconnu.';
		}
		// sinon, probème de connexion : plusieurs receptionnistes ont les mêmes identifiants de connexion.
		else {
			$erreur = 'Problème de connexion : merci de vous rapprocher de l\'administrateur.';
		}
	}
	else {
		$erreur = 'Un des champs est vide.';
	}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Connexion au formulaire de réception</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<style type="text/css">

</style>
</head>
<body>
<div id="logo"><img src="img/logo.png" width="199" height="86" alt="DOW KOKAM France" />

</div><br />
<div id="accueil">Bonjour, vous vous trouvez à la page d'accueil du formulaire de réception.<br /><br />
Merci de bien vouloir vous identifier :
</div>
<div id="form_login"><br />
<form id="form_login" name="form1" method="post" action="login.php">
      <p>
  <label for="login">Login :</label>
  <br />
        <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>">
        <br /><br />
        
        <label for="pass">Mot de passe :</label>
        <br />
        <input type="password" name="password" value="<?php if (isset($_POST['password'])) echo htmlentities(trim($_POST['password'])); ?>">
        <br />
        <br />
        <input name="connexion" type="submit" value="Connexion" />
        <input type="hidden" name="num_recept" id="num_recept" />
      </p>
</form>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>

</div>
</body>
</html>
merci pour votre aide et à très vite.

P.S.: (rien à voir mais très troublant!!) lorsque je mets echo $pass; à la place de echo $login; => mon mot de passe de connexion MySql s'affiche. Une idée?

Re: recuperation login dans formulaire

Posté : 29 janv. 2011, 12:23
par moogli
salut,


j'avoue ne pas comprend ta demande par rapport à ton code !

ton exit() dans la validation du formulaire fait que le script s’arrête a cette ligne, donc validation du formulaire et ça va pas plus loin.

en général exit n'est utilisé que dans le cas d'une "erreur fataal" qui va foutre en l'air tous le reste (par exemple pas de connection au sgbd et la le site est en vrac, même si y préférer une page html bien formée avec un mot d'excuse est préférable ;) ).

je pense que si tu enlève le exit tu va arriver à tes fin (si tu rentre des couple mdp / pxd qui ne sont pas dans la table ta page s'affiche avec les bon couple dans le formulaire ?


@+

Re: recuperation login dans formulaire

Posté : 29 janv. 2011, 15:48
par n1cklas06
Re bonjour,
tout d'abord merci pour ta réponse.

j'apporte quelques précisions afin que l'on se comprenne un peu mieux :

j'ai supprimé le exit(); dans le code de la page login.php comme tu me l'as suggéré. Mais rien n'y fait.
Alors dans ma page cible (nommé index.php) j'ai mis un echo qui m'affiche bien le login tapé :
echo $_SESSION['login'];
mais je n'arrive pas à faire en sorte que ce login soit considéré comme étant une variable
$_SESSION['login'] = $_POST['login'];
dans ma requête :
$req = mysql_query("SELECT nom_prenom,email_recept FROM CONTACTS where login like '".$login."%'");
while ($r = mysql_fetch_array($req)) {

$nom_prenom = $r['nom_prenom'];
$email_recept = $r['email_recept'];

}

bref je voudrais que $nom_prenom et $email_recept soit personnalisé en fonction du login tapé dans login.php
en l'état actuel des choses mon code ne m'affiche que la dernière ligne de ma table CONTACTS.

merci encore pour votre aide.

Nicolas

Re: recuperation login dans formulaire

Posté : 29 janv. 2011, 18:44
par AB
Je comprend pas trop le "like" dans ta requête.

Il y a tuto (avec code complet et fonctionnel) sur ce que tu veux faire ici

Re: recuperation login dans formulaire

Posté : 29 janv. 2011, 23:14
par n1cklas06
Re bonjour,

alors j'ai bien suivi pas à pas le tuto qui m'a été conseillé.
Je l'ai appliqué et mis en ligne en remplacement de ma page login.php que j'ai posté plus haut.

Malheureusement le problème suivant persiste sur ma page de destination (index.php):
J'ai toujours le nom et l'adresse de la dernière ligne de ma table qui s'affiche dans mon formulaire et ce quelque soit le login et mot de passe que je rentre.

(j'ai revu la syntaxe de ma requête => en remplaçant le "LIKE" par un "=")

voici le code de ma page index.php :
echo htmlspecialchars($_SESSION['login']); // le pseudo s'affiche correctement

$req = mysql_query("SELECT nom_prenom,email_recept FROM CONTACTS where pseudo = '".$login."'");
while ($r = mysql_fetch_array($req)) {
	
	$nom_prenom = $r['nom_prenom'];
	$email_recept = $r['email_recept'];
	
}
en revanche si j'écris en 'dure' :
$req = mysql_query("SELECT nom_prenom,email_recept FROM CONTACTS where pseudo = 'nicolas'");

et bien là, tout s'affiche comme je le souhaite...

je ne comprends vraiment pas ou se trouve ma bourde. (si si...)

merci encore une fois pour votre aide .

Re: recuperation login dans formulaire

Posté : 29 janv. 2011, 23:47
par AB
Re bonjour,

alors j'ai bien suivi pas à pas le tuto qui m'a été conseillé.
Je l'ai appliqué et mis en ligne en remplacement de ma page login.php que j'ai posté plus haut.

Malheureusement le problème suivant persiste sur ma page de destination (index.php):
J'ai toujours le nom et l'adresse de la dernière ligne de ma table qui s'affiche dans mon formulaire et ce quelque soit le login et mot de passe que je rentre.
Faire comme dans le tuto :
On écrit la requête puis on l'exécute, ça permet de mieux séparer l'ensemble en faisant par exemple afficher la requête.
$req = "SELECT nom_prenom,email_recept FROM CONTACTS where pseudo = '".$_SESSION['login']."'";

// pour débugage 
 echo $req;

$ressource = mysql_query($req) or die(mysql_error());

Re: recuperation login dans formulaire

Posté : 30 janv. 2011, 00:02
par n1cklas06
grosse faute d'inattention... :oops:

merci infiniment à toi AB...

Re: recuperation login dans formulaire

Posté : 30 janv. 2011, 05:33
par AB
:wink:
Au passage je n'ai pas été assez strict dans l'exemple que je t'ai donné, puisqu'il faut toujours (comme l'indique mon tuto :mrgreen: ) utiliser la fonction "mysql_real_escape_string" dans les requêtes avec mysql ou mysqli, soit :
$req = "SELECT nom_prenom,email_recept FROM CONTACTS where pseudo = '".mysql_real_escape_string($_SESSION['login'])."'";