Login en php

Gamma -  
 Gamma -
Bonjour,

Je tente de créer un cookie en php qui limite les tentatives d'acces à 3 tentatives. Je veux empêcher un utilisateur de se reconnecter après 3 tentatives ratés et ce pour un 5 minutes.

merci de me guider!

12 réponses

djflexlive Messages postés 577 Statut Membre 95
 
Si tu utilises une base de données ou fichiers textes, tu peux utiliser un système de sessions pour "tracker" les tentatives de logins infructueuses.

Au lieu de placer un cookie chez le visiteur, tu mémorisera son ip pour une durée de 5 minutes. Il est plus rapide de vider ses cookies que de changer son ip (sauf si il passe par un proxy). Mais dans l'ensemble, je préconiserai cette solution.
0
Gamma
 
Merci DJflexlive,

Je comprends ta logique mais mon problème est que la raison que je dois faire un cookie est dans le cadre d'une formation et dans l'exercice c'est la seule partie que je reste bloqué, je n'ai donc pas de base de donnée. Est-ce que je dois faire une fonction qui va incrémenter pour compter les tentatives?

merci beacoup d'avoir pris le temps de me répondre.
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
bonjour...

si ca peut taider...voici les fonction en javascript pour gérer les cookies :

function SetCookie(Identifiacteur,Valeur){
var Recharge=false;
var expdate = new Date ();
var noexpdate = new Date ();

expdate.setTime(expdate.getTime() + (24 * 60 * 60 * 1000 * 2));// 1 jour
noexpdate.setTime(expdate.getTime() + (365 * 24 * 60 * 60 * 1000 * 2));// 1 an

if (Identifiacteur == "Lang"){
document.cookie = Identifiacteur + "=" + Valeur + "; expires=" + noexpdate.toGMTString();
}else{
document.cookie = Identifiacteur + "=" + Valeur + "; expires=" + expdate.toGMTString();
}
}

function getCookieVal(offset) {
var endstr=document.cookie.indexOf (";", offset);
if (endstr==-1)
endstr = document.cookie.length;
return document.cookie.substring(offset, endstr);
}

function GetCookie (name) {

var arg=name+"=";
var alen=arg.length;
var clen=document.cookie.length;
var i=0;
while (i<clen) {
var j=i+alen;
if (document.cookie.substring(i, j)==arg)
return getCookieVal (j);
i=document.cookie.indexOf(" ",i)+1;
if (i==0) break;
}
return null;
}


Si tu as des questions... hesite pas ;)
0
arthezius Messages postés 3756 Statut Membre 475
 
Sinon tu fais un cookie qui comptabilise les tentatives.
Exemple:
if(!isset($_COOKIE['count']))
     {$temps = 1800;
     setcookie ("count", "1", time() + $temps);}
elseif($_COOKIE['count']=="1")
     {$temps = 1800;
     setcookie ("count", "2", time() + $temps);}
elseif($_COOKIE['count']=="2")
     {$temps = 1800;
     setcookie ("count", "3", time() + $temps);}
else{echo"Vous avez tenté trois fois de vous connecter.";}

En adaptant ce code ça devrai pouvoir faire ce que tu veux.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gamma
 
Merci beaucoup...ca fonctionne, il affiche le message après le 3e échec. Mais y a-t-il une façon d'empêcher l'utilisateur de se reconnecter lors des 5 prochaines minutes?

Merci encore!
0
djflexlive Messages postés 577 Statut Membre 95
 
Tu remplaces echo "Vous avez tenté trois fois de vous connecter."; par $authorized_login = 'no';

Et ensuite :

if ( isset($authorized_login) ) {
TON FORMULAIRE DE LOGIN
} else {
echo 'Vous ne pouvez pas vous identifier pendant 5 minutes.';
}
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
sinon, tu met l exiration du cookies à 5 minutes... si la derniere tentative de connection est de plus de 5 min, le cookie est donc expiré et n est pas pris en compte ;)
0
Gamma
 
Vous allez me trouver poche, mais j'ai essayer les 2 façons et ça fonctionne pas...je met une expiration a mon cookie mais ca m'empêche pas de pouvoir me connecter.
0
jeremieca Messages postés 225 Statut Membre 28
 
Bah tu enregistre son ip et l'heure de ses essaies dans une table de ta bdd et si ça le total d'entrée pour une IP dépasse 3 alors tu vérifies que il y est 5 mn d'écoulée depuis la dernière date. Lorsque l'utilisateur parvient à se connecter, supprime toutes les entrées liées à son IP et voila !

A plus.
0
Gamma
 
Ca semble facile mais j'en suis pas rendu la dans mes connaissances en php et j'utilise pas de bdd.

Voici je ce que j'ai comme code présentement...le message s'affiche pour bannir l'usager mais dans les faits, il peut se reconnecter immédiatement..

merci pour toute l'aide reçu jusqu'a présent!

<?php
if(!isset($_COOKIE['tentative']))
{
setcookie ("tentative", "1", time() + 300);
}
elseif($_COOKIE['tentative']=="1")
{
setcookie ("tentative", "2", time() + 300);
}
elseif($_COOKIE['tentative']=="2")
{
setcookie ("tentative", "3", time() + 300);
}
else
{
echo "L'authentification est verrouillé pour 5 minutes puisque vous avez eu 3 mauvaises tentatives

d'authentification. Vous devez ré-essayer plus tard";
}
?>
0
arthezius Messages postés 3756 Statut Membre 475
 
Ce qui reviens exactement a ce que j'avais mis plus haut en fait.
0
Gamma > arthezius Messages postés 3756 Statut Membre
 
Arthesius,

Oui, c'est à partir de ton code que j'ai mon résultat...mais comme je mentionne, j'arrive pas à empêcher l'utilisateur de se connecter même après 3 tentative et ce, avec le 300 secondes (5 minutes) d'expiration...
0
Gamma > arthezius Messages postés 3756 Statut Membre
 
Arthesius,

Oui, c'est à partir de ton code que j'ai mon résultat...mais comme je mentionne, j'arrive pas à empêcher l'utilisateur de se connecter même après 3 tentative et ce, avec le 300 secondes (5 minutes) d'expiration...
0
arthezius Messages postés 3756 Statut Membre 475
 
Peut-tu m'expliquer comment se place ce code par rapport à ta page de connection?
0
Gamma
 
Voici....

------------------------------------
J'ai ma page d'authentification:
-----------------------------------
<html>
<head>
<title>page_authentification</title>
</head>
<body>
<?php
if(isset($_POST['nomUsager'], $_POST['motDePasse']))
return authentification($_POST['nomUsager'], $_POST['motDePasse']);
else
echo "Entrez votre nom d'usager et votre mot de passe pour continuer
<form name=identification method=POST action='verification_authentification.php'>
Nom d'usager : <input type=text name=nomUsager> <br>
Mot de passe : <input type=text name=motDePasse> <br>
<input type=submit value=logger>
</form>";
?>
</body>
</html>

------------------------------------
puis la page de verification...
-----------------------------------

<?php
if(!isset($_COOKIE['count']))
{
setcookie ("count", "1", time() + 300);
}
elseif($_COOKIE['count']=="1")
{
setcookie ("count", "2", time() + 300);
}
elseif($_COOKIE['count']=="2")
{
setcookie ("count", "3", time() + 300);
}
else
{
$authorized_login = "no";
echo "L'authentification est verrouillé pour 5 minutes puisque vous avez eu 3 mauvaises tentatives

d'authentification. Vous devez ré-essayer plus tard";
}
?>

<html>
<head>
<title>verification_authentification</title>
</head>
<body>
<?php
function authentification($usager, $mdp)
{
if ($usager=="david" && $mdp=="abc123")
echo "Authentification réussi! Bienvenue David <br>";

else
{
echo 'Vous ne pouvez pas vous identifier pendant 5 minutes.';
}
}
$usager=$_POST["nomUsager"];
$mdp=$_POST["motDePasse"];
authentification($usager, $mdp);
?>
<a href="http://localhost/page_authentification.php">
Retourner au formulaire d'authentification</a>
</body>
</html>


Merci...j'apprécie vraiment ton aide arthezius!
0