Authentifier un visiteur !

Eléphanteau du PHP | 21 Messages

03 déc. 2005, 23:26

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']. ''; 
}
?>

Mammouth du PHP | 1311 Messages

03 déc. 2005, 23:28

salut
quel est le probleme

Eléphanteau du PHP | 21 Messages

03 déc. 2005, 23:42

Bien, je ne vois pas comment je peux faire !!
Car seul la première entréé de la table marche ! Mais pas les autres ...

Mammouth du PHP | 1311 Messages

03 déc. 2005, 23:56

a quoi ressemble ta table?
a tu un message d'erreur
car c'est difficile pour nous de deviner

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 déc. 2005, 23:57

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 * .

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 21 Messages

04 déc. 2005, 00:12

Ok merci ! ça marche ! Sinon, tu pourrais me mettre sur la piste pour la déconnexion, car je ne vois pas du tout ..

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 déc. 2005, 00:20

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 21 Messages

04 déc. 2005, 00:24

Merci ! Par contre, je ne comprends pas pour le cryptage ? et à quoi ça sert ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 déc. 2005, 00:28

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 21 Messages

04 déc. 2005, 00:29

Ok j'ai regardé comment s'en servir ! Mais je n'ai pas super bien compris !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 déc. 2005, 00:34

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 21 Messages

04 déc. 2005, 00:38

Tu veux dire que ce code se emt juste dans la partie d'inscription ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 déc. 2005, 00:47

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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 21 Messages

04 déc. 2005, 01:04

<?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 ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 déc. 2005, 03:12

voila c'est ça, et pareil pour l'identification

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute