Page 1 sur 2

Authentifier un visiteur !

Posté : 03 déc. 2005, 23:26
par flyxter
Bonjour,

C'est pour authentifier un visiteur, mais visiblement, il ne marche pas, alors je ne vois pas comment faire du tout ! Si quelqu'un pourrait m'aider s'il vous plait!

<form method="post" action="essai2.php">
   <p>
       <label>Votre pseudo : <input type="text" name="pseudo1" /></label></br>
	   <label>Votre mot de passe : <input type="text" name="mot_de_passe1"/></label></br>
	   <input type="submit" value="envoyer">
   </p>  
</form>

<?
if (isset($_POST['mot_de_passe1']) AND isset($_POST['pseudo1'])) //si les champs existent
{
	if ($_POST['mot_de_passe1'] != NULL AND $_POST['pseudo1'] != NULL) //si les champs ne sont pas vides
	{
		$mot_de_passe = $_POST['mot_de_passe1'];
		$pseudo = $_POST['pseudo1'];
		
		mysql_connect('localhost','root','');
		mysql_select_db('essai_php');
	
		$donnees_inscription = mysql_query("SELECT * FROM inscription");
		$donnees_inscription1 = mysql_fetch_array($donnees_inscription);
		
		if ($mot_de_passe == $donnees_inscription1['mot_de_passe'] AND $pseudo == $donnees_inscription1['pseudo'])
		{
			$_SESSION['pseudo'] = $pseudo;
			$_SESSION['mot_de_passe'] = $mot_de_passe;	
		}
		mysql_close();	
	}	
}
?>	


<?php 

if (isset($_SESSION['pseudo']) AND isset($_SESSION['mot_de_passe']))
{

echo 'salut' .$_SESSION['pseudo']. ''; 
}
?>

Posté : 03 déc. 2005, 23:28
par jeff
salut
quel est le probleme

Posté : 03 déc. 2005, 23:42
par flyxter
Bien, je ne vois pas comment je peux faire !!
Car seul la première entréé de la table marche ! Mais pas les autres ...

Posté : 03 déc. 2005, 23:56
par jeff
a quoi ressemble ta table?
a tu un message d'erreur
car c'est difficile pour nous de deviner

Posté : 03 déc. 2005, 23:57
par Truc
Salut, il faut boucler sur le resulat de la requete, regarde la doc sur mysql_fetch_array() tu y vera des exemples.

Mais vaut mieux eviter de sortir toute les données de la table meme celles dont tu ne te serviras pas. Pour cela il faut inclure la clause WHERE dans la requete et ne séléctionner que les champs qui correspondent au pseudo et passe.
SELECT pseudo,mot_de_passe FROM ... WHERE pseudo="" AND mot_de_passe=""
de plus ne séléctionne que les champs utiles au traitement evite le * .

Posté : 04 déc. 2005, 00:12
par flyxter
Ok merci ! ça marche ! Sinon, tu pourrais me mettre sur la piste pour la déconnexion, car je ne vois pas du tout ..

Posté : 04 déc. 2005, 00:20
par Truc
as tu aussi pensé a traiter le mot de passe avec md5() ou autre fonction permettant de hacher (crypter) ?!

pour la déconnexion regarde un peu ce tuto.

Mais tu peut également initialiser une variable de session a vrai si l'identification est bonne et a la déconnexion tu la passe a faux, et tu testera si cette variable est vrai ou fausse pour afficher les partie souahitées.

Posté : 04 déc. 2005, 00:24
par flyxter
Merci ! Par contre, je ne comprends pas pour le cryptage ? et à quoi ça sert ?

Posté : 04 déc. 2005, 00:28
par Truc
ca permet de "cacher" le mot de passe entré dans la BD et évite qu'une charmante personne ne profite des joie qu'offre le passe de l'admin du site :wink:

En clair peut éviter l'utilisation frauduleuse de comptes par une tiers personne.

Posté : 04 déc. 2005, 00:29
par flyxter
Ok j'ai regardé comment s'en servir ! Mais je n'ai pas super bien compris !

Posté : 04 déc. 2005, 00:34
par Truc
eh bien, lorsque tu entre un nouveau compte dans la BD tu traite le passe avec cette fonction.
$passe_md5=md5($passe);
et la tu enregistre dans la BD le passe traité.

sans oublier d'en faire autant lors de l'identification, pour faire la requete le passe doit etre haché.

Par contre cette méthode est irréversible, plus grande fiablité, en cas d'oublis du passe par un membre tu devras lui en attribuer un nouveau.

Posté : 04 déc. 2005, 00:38
par flyxter
Tu veux dire que ce code se emt juste dans la partie d'inscription ?

Posté : 04 déc. 2005, 00:47
par Truc
Hmm pas clair, mais c'est une fonction php tu peut donc faire appel a elle comme je l'ai montré.
ensuite tu dois avoir une requete d'insertion où tu enregistre les données du membre dans la BD avant cette requete tu traite donc le passe avec cette fonction.

et tu en fait autant pour l'identification, avant la requete SELECT hop md5() :wink:

Posté : 04 déc. 2005, 01:04
par flyxter
<?php
if (isset($_POST['pseudo']) AND isset($_POST['mot_de_passe']) AND isset($_POST['e_mail']) AND isset($_POST['naissance']) AND isset($_POST['pays']) AND isset($_POST['commentaire']))
{
	if ($_POST['pseudo'] !=NULL AND $_POST['mot_de_passe'] !=NULL AND $_POST['e_mail'] !=NULL AND $_POST['naissance'] !=NULL AND $_POST['pays'] !=NULL OR $_POST['commentaire'] !=NULL)
	{
	$pseudo = htmlentities ($_POST['pseudo']);
                $mot_de_passe = htmlentities($_POST['mot_de_passe']);
                $mot_de_passe = md5($mot_de_passe);
	$e_mail = htmlentities($_POST['e_mail']);
	$naissance = htmlentities($_POST['naissance']);
	$pays = htmlentities($_POST['pays']);
	$commentaire = htmlentities($_POST['commentaire']);
	
	mysql_connect("localhost","root","");
	mysql_select_db("essai_php");
	
	mysql_query("INSERT INTO inscription VALUES('','$pseudo','$mot_de_passe','$e_mail','$naissance','$commentaire','$pays')");
	mysql_close();
	}
}
?>

Code : Tout sélectionner

<form method="post" action="essai3.php"> <p> <label>Votre pseudo : <input type="text" name="pseudo" /></label></br> <label>Votre mot de passe : <input type="text" name="mot_de_passe"/></label></br> <label>Votre e_mail : <input type="text" name="e_mail" /></label></br> <label>Votre date de naissance : <input type="text" name="naissance" /></label></br> <label>Votre pays : <input type="text" name="pays" /></label><br> <label>Commentaire : <input type="text" name="commentaire" /></label></br> <input type="submit" value="envoyer"> </p> </form>
C'est bon comme ça ?

Posté : 04 déc. 2005, 03:12
par Truc
voila c'est ça, et pareil pour l'identification