VERIFICATION PHP DANS MA BASE pour identification web

RTS
Eléphanteau du PHP | 43 Messages

21 sept. 2011, 15:53

bonjour j ai besoin de votre aide , j ai travaillé pendant des heures un script et ça ne fonctionne pas. j explique ci dessous le détail, qui peut me dire ou sont les erreurs, je suis super débutant en php...rien ne fonctionne, j ai utilisé toutes les lectures de ce site mais là je bloque : je m explique sur le résultat attendu :

sur ma page d accueil : un formulaire avec deux champs qui sont l identifiant et le mot de passe.
l'identifiant va vérifier l'adresse mail que le client a fournit à l'inscription(champs $email)et le mot de passe sera le champs code postal fournit sur la meme ligne dans la base à l inscription (champ $cod). (sans distinction majuscule minuscule pour le mail)

on reste sur la même page d'accueil pour vérifier et si login et mot de passe ok on va sur la page indexok.htm directement,

___________________________________________________________________________________________

mon formulaire à inclure dans ma page index.htm :
___________________________________________________________________________________________

<form action="login.php" method='post'>
<table align="center" border="0">
<tr>
<td>Login :</td>
<td><input type="text" name="login" maxlength="250"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password"name="pass" maxlength="10"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="log in"></td>
</tr>
</table>
</form>
___________________________________________________________________________________________
mon fichier login.php :
____________________________________________________________________________________________
<?
//connexion vers mysql


if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
extract($_POST);

$sql = "select pwd from ceuser where login='".$email."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data = mysql_fetch_assoc($req);

if($data['pwd'] != $cod) {
echo '<p>Mauvais email / mot de passe. Merci de recommencer</p>';
include('index.htm'); // On inclut le formulaire d'identification
exit;
}
else {
session_start();
$_SESSION['login'] = $email;

echo 'Vous etes bien logué';
http://www.indexok.htm
}
}
else {
echo '<p>Vous avez oublié de remplir un champ.</p>';
include('index.htm'); // On inclut le formulaire d'identification
exit;
}
?>

_________________________________________________________________________________________________________________________________________________________

<?
session_start();

/*
si la variable de session login n'existe pas cela siginifie que le visiteur
n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
acceder à l'espace membres et est renvoyé sur la page index.htm pour se loguer,
*/
if(!isset($_SESSION['login'])) {
echo 'Vous n\'êtes pas autoris´ à acceder à cette zone';
include('index.htm');
exit;
}
?>

_____________________________________________________________________________________________________


merci pour votre relecture et votre aide

RTS
Eléphanteau du PHP | 43 Messages

21 sept. 2011, 15:55

complément d info, ceuser est le nom de la table ou je dois lire les deux champs à vérifier,

merci

Eléphanteau du PHP | 10 Messages

21 sept. 2011, 17:19

Salut!! Ton sujet tombe bien, j'ai le même projet et les mêmes problèmes lol.

Déjà je pense avoir vu une erreur dans ton code au niveau des guillemets? Sont-ils dans l'ordre?
$sql = "select pwd from ceuser where login=' " .$email." ' ";

Ensuite je comprend pas trop l'interêt d'envoyer sur une autre page pour tester? Teste sur ta page et va vers index ok que si c'est bon?

RTS
Eléphanteau du PHP | 43 Messages

21 sept. 2011, 18:33

oui c est ça je vais sur la page ok que si c est bon.....

merci pour votre aide

Eléphanteau du PHP | 10 Messages

21 sept. 2011, 18:42

Deja ce que je peux te dire, c'est que ta page indexok doit etre en php. La raison est que sur cette page, tu vas devoir(normallement) verifier si ta session est bien ouverte...

Ensuite, il n'y a aucune sécurité dans ton code (un formulaire, si il n'est pas vérifié) est suceptible d'accueillir des balises html...

Pour ton code, je m'aperçois qu'il n'y a rien qui defini
$email
?A quoi ca correspond, a
$_POST['login']
Je pense que tu devrais commencer par lire: http://www.siteduzero.com/tutoriel-3-14 ... mysql.html

Bon courage!!

RTS
Eléphanteau du PHP | 43 Messages

21 sept. 2011, 18:44

$email c est le champs à vérifier dans ma base,
qui peut me dire pourquoi j ai des bugs?
merci

RTS
Eléphanteau du PHP | 43 Messages

21 sept. 2011, 18:52

oui mes noms de pages doivent etre en php, mais même là ça fonctionne pas....merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 sept. 2011, 19:49

commentaire dans le code
<?php
//connexion vers mysql

// isset $_POST inutile car $_POST existe toujours même si pas de formulaire soumis
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
	extract($_POST); // ça c'est sujet à emmerdement si auto déclaration des variables et de toute façon tu a déja le tableau 

	$sql = "select pwd from ceuser where login='".$email."'";// $email n'existe pas dans le formulaire
	//$sql = 'select pwd froom ceuser where login = \''.mysql_real_escape_string($_POST['login']).'\'';
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); // peut être traité plus proprement sans die
	// ajoute un test sur le nombre de tuple retourné avec mysql_num_rows il ne doit y en avoir qu'un seul !
	$data = mysql_fetch_assoc($req);

	if($data['pwd'] != $cod) {// $cod n'existe pas non plus je pense que c'est plutot $_POST['pass'] ?
		//if ($data['pwd'] != $_POST['pass']
		echo '<p>Mauvais email / mot de passe. Merci de recommencer</p>';
		include('index.htm'); // On inclut le formulaire d'identification
		exit;
	}
	else {
		session_start();
		$_SESSION['login'] = $email; // idem email n'existe pas mais $_POST['login'] oui

		echo 'Vous etes bien logué';
		// alors la c'est simple tu a un PARSE ERROR à la ligne suivante !!!!!!!!!
		// utilise include dans pour le reste ou la fonction header()
		// d'ailleurs si ton fichier est en ".html(l)" y a peu de chance que tu puisse vérifier les sessions avec !
		http://www.indexok.htm 
	}
}
else {
	echo '<p>Vous avez oublié de remplir un champ.</p>';
	include('index.htm'); // On inclut le formulaire d'identification
	exit;
}
?>
pense a utilise <?php et non <? qui n'est pas la configuration par défaut de php.
pense a indenter ton code (les espaces en début de ligne) pour augmenter la clarté de celui ci (on s'y retrouve mieux et permet le débogage plus rapidement).

c'est des bout de code mis bout à bout tous cela ? si ce n'est pas le cas je te conseil de revoir les base, par exemple http://www.lephpfacile.com/cours/8-recu ... ormulaires

@+
Il en faut peu pour être heureux ......

RTS
Eléphanteau du PHP | 43 Messages

22 sept. 2011, 11:45

bonjour malgré toutes vos remarques rien ne fonctionne,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 sept. 2011, 11:49

qu'a tu testé ?

a tu compris mes commentaire dans le code ?

@+
Il en faut peu pour être heureux ......

RTS
Eléphanteau du PHP | 43 Messages

27 sept. 2011, 11:08

bonjour
ça fonctionne super merci