protection par mot de passe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : protection par mot de passe

Re: protection par mot de passe

par ezacal » 10 févr. 2011, 18:32

:oops: :oops: :oops:
mais c'est bien sur!!!
tout fonctionne!!
merci à tous

Re: protection par mot de passe

par xTG » 09 févr. 2011, 22:43

La correction de ton code suite à une erreur bête :
if ($num_rows==0)
{
  header("location: index.php");
  exit();
}
C'est un double égal pour tester une valeur.
Et le exit() pour être sûr d'arrêter le script après la commande header().

Re: protection par mot de passe

par ezacal » 09 févr. 2011, 21:43

j'essaye ça demain
merci

Re: protection par mot de passe

par AB » 09 févr. 2011, 20:52

C'est tout détaillé (avec code fonctionnel) sur ce lien

Re: protection par mot de passe

par ezacal » 09 févr. 2011, 20:08

merci pour ce conseil
j'ai donc fait des recherches et fait ça
$db = mysql_connect('XXX', 'XXX', 'XXX')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  

mysql_select_db('XXX',$db)  or die('Erreur de selection '.mysql_error());

$sql="Select * from acces where admin='$_POST[admin]' and motdepasse='$_POST[motpasse]'";
$resultat=mysql_query($sql) or die("Erreur SQL : $sql<br/>".mysql_error());

$num_rows = mysql_num_rows($resultat);

echo "$num_rows Rows\n";
// ce echo est juste ici pour vérifier


if ($num_rows=0)
		{header("location: index.php");}
		
pas mieux!!!
le fichier est toujours accessible!!!
ps : l'echo donne bien la bonne réponse (1 row en cas d'accès par formulaire et mot de passe ok et 0 row si accès par navigateur ou via formulaire avec mot de passe erronné)

Re: protection par mot de passe

par xTG » 09 févr. 2011, 19:39

Tu devrais avoir des warnings avec ce code.
Car si tu as accès à la page sans passer par le formulaire le tableau $_POST est vide et tu tentes donc d'accéder à des clés non existantes.
if( !empty($_POST['admin']) ) // on vérifie les données
{

}
else
{
  // pas de valeur, donc non renseignée dans le formulaire ou bien on ne vient pas du formulaire
}
Sinon avec une telle requête il serait plus intéressant d'utiliser mysql_num_rows() pour savoir si les identifiants sont corrects. Là tu fais deux fois le travail. ;)

protection par mot de passe

par ezacal » 09 févr. 2011, 19:02

bjr
jusqu'ici ,je protégeai mes petits secrets par une simple contrôle
if ($_POST['admin'] !=='XXX' or $_POST['motpasse'] !=='XXX')
		{header("location: index.php");}
pour le 1er fichier
puis
if ($_SESSION['admin'] !=='XXX' or $_SESSION['motpasse'] !=='XXX')
		{header("location: index.php");}
pour les autres
je voulais ,maintenant que je suis grand (si, si), faire la même chose via ma BDD
<?php
	session_start();
	//Initialisation erreur


$db = mysql_connect('xxx', 'xxxx', 'xxx')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  

mysql_select_db('xxx',$db)  or die('Erreur de selection '.mysql_error());

$sql="Select * from acces where admin='$_POST[admin]' and motdepasse='$_POST[motpasse]'";
$resultat=mysql_query($sql) or die("Erreur SQL : $sql<br/>".mysql_error());
$acces = mysql_fetch_array ($resultat)	;
$admin=$acces['admin'];
$motpasse=$acces['motdepasse'];


if ($_POST['admin'] !==$admin or $_POST['motpasse'] !==$motpasse)
		{header("location: index.php");}
		
losque je fais un echo, tout fonctionne,
le post, la session, la bdd, lorsque j'ecrase la session elle n'existe plus etcetc
pourtant mon fichier n'est pas protégé si je tape l'adresse dans le navigateur.
Je ne comprends où est l'erreur
merci de votre aide

?>