Securiser une page de connection
Fermé
wassil56
Messages postés
82
Date d'inscription
mardi 12 mai 2015
Statut
Membre
Dernière intervention
16 octobre 2015
-
16 août 2015 à 19:07
wassil56 Messages postés 82 Date d'inscription mardi 12 mai 2015 Statut Membre Dernière intervention 16 octobre 2015 - 16 août 2015 à 20:40
wassil56 Messages postés 82 Date d'inscription mardi 12 mai 2015 Statut Membre Dernière intervention 16 octobre 2015 - 16 août 2015 à 20:40
A voir également:
- Securiser une page de connection
- Supprimer une page word - Guide
- Traduire une page - Guide
- Gmail connection - Guide
- Word numéro de page 1/2 - Guide
- Créer une page facebook - Guide
1 réponse
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié par jordane45 le 16/08/2015 à 19:50
Modifié par jordane45 le 16/08/2015 à 19:50
Bonjour,
Déjà ... voici ton code un peu amélioré....
pas besoin de dupliquer du code html dans tes IF/ELSEE (aie.. j'en ai encore mal aux yeux....)
Et pour ce qui est de ta question :
Le plus simple c'est :
1 - Tu récupères l'IP de l'utilisateur
(via
2 - A chaque tentative en erreur tu insères une ligne dans une table comportant : L'ip / le pseudo / la Date Heure de l'ajout en BDD de cette ligne
3 - Lorsque tu affiches la page de connexion, tu requêtes sur cette table pour savoir combien de connexions en erreur il y a eu depuis x minutes... si =3 ... alors... tu rediriges vers une page d'erreur....
3 bis : Si la connexion est réussis.. je pense qu'une PURGE de la table (concernant ce user) peut être faite...
Cordialement,
Jordane
Déjà ... voici ton code un peu amélioré....
pas besoin de dupliquer du code html dans tes IF/ELSEE (aie.. j'en ai encore mal aux yeux....)
<?php //Démarrage des variables de SESSION (avant toute autre chose ! ) session_start(); //connexion à la BDD require_once 'bdd.php'; //récupération "propre" des variables : $pseudo = !empty($_POST['pseudo'])?htmlspecialchars($_POST['pseudo']):NULL; $pass = !empty($_POST['pass'])?$_POST['pass']:NULL; //variable utilisée pour afficher message d'erreur $msg = ""; //Traitement du submit : if (isset($_POST['pseudo']) aa ($_POST['pass'])){ if($pseudo && $pass){ try{ $pass_hache = sha1(htmlspecialchars($_POST['pass'])); $sql = "SELECT id FROM admin WHERE pseudo = :pseudo AND pass = :pass"; $params = array('pseudo' => $pseudo , 'pass' => $pass_hache ); $req = $bdd->prepare($sql); $req->execute($params); $resultat = $req->fetch(); if($resultat){ $_SESSION['id'] = $resultat['id']; $_SESSION['pseudo'] = $pseudo; header('location:espace.php'); }else{ $msg = "Mauvais identifiant ou mot de passe !"; } }catch(PDOException $e) { // En cas d'erreur dans la requête echo "<br><b>Erreur dans la requête: </b><br>".$e->getMessage(); } }else{ $msg="Des informations sont manquantes"; } } // titre de la page $title = !empty($msg) ? "Erreur" : "Connexion"; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?php echo $title;?></title> </head> <body> <form style="border: 2px solid black;width:300px;margin:auto;text-align:center;" method="post" action="verif.php"> <p><?php echo $msg;?></p> <p >Identifiant :<br/><input type="text" name="pseudo" required value="<?php echo $pseudo;?>"/></p> <p >Mot de passe :<br/><input type="password" name="pass" required/></p> <input style="width:100px;" type="submit" value="Se connecter"> </form> </body> </html>
Et pour ce qui est de ta question :
je voudrais des idées pour ameliorer le code pour permetre par exemple 3 essais, et si apres le troisieme essai il ya echec, il faut attendre 15 minutes
Le plus simple c'est :
1 - Tu récupères l'IP de l'utilisateur
(via
$_SERVER['REMOTE_ADDR'])
2 - A chaque tentative en erreur tu insères une ligne dans une table comportant : L'ip / le pseudo / la Date Heure de l'ajout en BDD de cette ligne
3 - Lorsque tu affiches la page de connexion, tu requêtes sur cette table pour savoir combien de connexions en erreur il y a eu depuis x minutes... si =3 ... alors... tu rediriges vers une page d'erreur....
3 bis : Si la connexion est réussis.. je pense qu'une PURGE de la table (concernant ce user) peut être faite...
Cordialement,
Jordane
16 août 2015 à 20:11
votre façon de coder m'impressionne meme si n'ai pas tout compri
que signifie le ?variable:NULL j'ai juste compri qu'il sagit d'une condition !empty=if not empty, enfin je pense
meme chose pour ce code s'il vous plait
sinon pour les etapes que vous m'avez donné je vais maintenant commencer a concevoir l'algorithme qu'il faut
merci pour votre aide
16 août 2015 à 20:34
Tu verras que c'est simplement une autre façon de faire un If/else
16 août 2015 à 20:40
https://forum.phpfrance.com/tutoriels/expr1-expr2-expr3-operateur-ternaire-t14111.html
c'est tres interessant merci