Problème authentification

Bonjour,

Je suis en train de creer une zone membre pour un site d’un groupe de ma ville, enfin bref et là tout fonctionne très bien, ma page d’inscription avec les valeurs id, email, prénom, âge, pays etc… S’inscrivent dans ma base MySQL… Mais là ou je rencontre un problème c’est quand je veux acceder à ma zone membre avec mon identifiant (qui est un email) avec mon mot de passe.
J’avais pris un ancien script trouvé sur un site. Je vais essayer de vous expliquer au mieux! :slight_smile:

Dès qu’un utilisateur appuis sur le bouton Ok de mon formulaire login:

<?php
if ($login)
{
	$check = authenticate($email,$password);
	if ($check > 0)
	{
			setcookie ("EMAIL",$email);
			setcookie ("PASSWORD",$password);
			$EMAIL = $email;
			$PASSWORD = $password;
			$action = "members";
	}
	else
	{
		$action = "failed";
	}
}
?>

La fonction authentificate correspond à celle-ci:


<?php
function authenticate($email,$password)
{
	$query = mysql_query("SELECT * FROM membres WHERE email = '$email' AND password = '$password'");
}
?>

Le problème c’est que même si mes login sont bon ça me fait toujours l’action failed qui correspond à ma pseudo-frame une page où ça marche que je me suis trompé de login… (La fonction members quand a elle transporte un membre bien identifié vers une page spécial)

Autre problème, mon site marche nickel sous Safari et même sur mon navigateur Opera de ma Nintendo Wii… Mais sous IE 7.0 c’est horrible! Et c’est à cause de cette ligne que j’ai mis dans mon index.php:

<?php
$check = authenticate($EMAIL,$PASSWORD);
if ($action == "")
{
	if ($check > 0)
	{
		$view = "images/blank.gif";
		$include = "pages/band.php";
	}
	else
	{
		$view = "images/sousmenu_news.gif";
		$include = "pages/news.php";
	}
}
?>

Ces lignes servent à savoir si le visiteur était dejà loguer de le redirigé directement vers un espace membre qui lui est propre…

Merci d’avance et j’éspère que j’ai été le plus clair possible!

marchera jamais.

les variables de formulaires sont dans $_POST, ou $_GET
les variables de cookie sont dans le tableau $_COOKIE (et dans ton cas: $_COOKIE[‘EMAIL’], $_COOKIE[‘PASSWORD’]

Salut,

Désolé du retard. Bon déjà voici le site: middlebreakfast.free.fr…

Le problème de compatibilité avec IE 7.0 est réglé, déjà uen bonne chose de faite.

Par contre, toujours pas de solution pour cette identification.
Voici les changements que j’ai opérés sur ma page:

<?php
if ($login)
{
	$query = mysql_query("SELECT * FROM membres WHERE email = '$email' AND password = '$password'");
	if ($query==0)
	{
		$action = "failed";
	}
	else
	{
		$EMAIL = $_POST['email'];
		$PASSWORD = $_POST['password'];
		$action = "members";
	}
}
if ($action == "members")
{
	$query = mysql_query("SELECT * FROM membres WHERE email = '$email' AND password = '$password'");
	if ($query==0)
	{
		$view = "images/sousmenu_news.gif";
		$include = "pages/contact.php";
	}
	else
	{
		$view = "images/blank.gif";
		$include = "pages/membres.php";
	}

}
if ($action == "failed")
{
	$view = "images/blank.gif";
	$include = "pages/contact.php";
}
?>

Pour les cookies ont va les oublier pour le moment… Mais je ne comprend pas pourquoi ça ne veut pas encore marcher… :frowning:

Après, comment mettre dans la page un code pour permettre de voir si oui ou non un membre est identifié? Si oui, lui affiché des liens, des images etc… (Juste dans un menu par exemple).
Edité le 02/07/2008 à 18:10

J’ai beaucoup de mal à décrypter ton code…
Déjà, comment sont définis les variables suivantes : $email, $login, $password avant le début du code (ie le “if($login)” )? D’ailleurs $login est du boolean?

Ensuite tu crées des conditions identiques deux fois, je ne vois pas l’intérêt de la variable $action, tu pourrais faire tout en un seul coup.
Enfin je suis sur que tu peux optimiser, car passer deux requêtes similaires l’une à la suite de l’autre… N’oublies pas que une requête = transaction entre php et ta DB, donc perte de temps (en simplifié : demande de données + récupérations + renvoie + traitement)
Edité le 02/07/2008 à 21:05

Pareil, cf mon message. Ton problème est là, c’est tout.

Salut,

Désolé du retard, finalement j’ai changé de code, j’en ai trouvé un qui a l’air plus “propre”…
Ca marche très bien maintenant!

Merci!
Edité le 22/07/2008 à 10:50