Login en php

Fermé
Gamma - 8 sept. 2009 à 03:52
 Gamma - 10 sept. 2009 à 22:46
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 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
8 sept. 2009 à 06:08
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
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 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
8 sept. 2009 à 12:06
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 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
8 sept. 2009 à 12:48
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
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 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
9 sept. 2009 à 06:28
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 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
9 sept. 2009 à 08:07
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
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 178 Date d'inscription lundi 9 juillet 2007 Statut Membre Dernière intervention 16 mars 2015 28
9 sept. 2009 à 14:50
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
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 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
10 sept. 2009 à 12:33
Ce qui reviens exactement a ce que j'avais mis plus haut en fait.
0
Gamma > arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016
10 sept. 2009 à 14:02
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 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016
10 sept. 2009 à 14:02
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 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
10 sept. 2009 à 21:41
Peut-tu m'expliquer comment se place ce code par rapport à ta page de connection?
0
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