[RESOLU] Authentification et validation en PHP

Eléphanteau du PHP | 15 Messages

14 août 2016, 01:48

Bonjour,

Je suis à la recherche d'aide pour créer un formulaire avec la description suivante;

J'ai commencé mais je bloque, est-ce que quelqu'un pourrait m'aider à ce que mes deux fichier PHP fonctionne svp

MErci!

Dans le premier fichier il devait contenir un formulaire avec le mode d’envoi POST d’authentification qui permettra la saisie du nom et du mot de passe de l’usager. Les informations recueillies dans ce formulaire doivent être envoyé au deuxième fichier : J’ai nommé ce fichier pratique3a.php

Dans le deuxième fichier il sera exécuté lorsque les informations provenant du formulaire du fichier pratique3a.ph. Seront envoyées. Le rôle de ce fichier PHP est de valider la saisie reçue et d’afficher un message d’erreur ou de succès dépendamment de la situation : J’ai nommé ce fichier pratique3b.php

Pour limiter les attaques d’authentification, nous allons permettre à l’usager que 3 tentatives d’authentification échouées. Pour compter le nombre de mauvaises tentatives, il faut utiliser un cookie qui sera incrémenté à chaque échec. Après 3 tentatives échouées, l’usager ne pourra plus se faire authentifier pendant une période de 5 minutes. Bien sûr, si l’usager s’authentifie avec succès, le compteur de mauvaises tentatives doit retomber à zéro. Dans le cas contraire, l’usager ne sera pas en mesure d’accéder au fichier nommé pratique3a.php.

Le système doit accepter seulement le nom d’usager Admin et le mot de passe goFoot12. Pour toutes autres combinaisons, le système doit répondre avec un message d’erreur demandant à l’usager de recommencer.

Vérifier l’existence des variables provenant des tableaux $_POST et $_COOKIE afin de ne pas utiliser des variables qui n’existent pas!

ce que j'ai fait à date fichier a:

<?php

$username = 'Admin';
$password = 'goFoot12';

if (empty($_POST['username']) && empty($_POST['password'])) {

}
else{
if ($_POST['username'] == $username && $_POST['password'] == $password) {
echo "Bon mot de passe: Vous pouvez afficher exercicePratique3b_Template.php";
}
else{
echo "Mauvais mot de passe: Login Invalid";
}
}

?>
<html>
<form id="login" action = "exercicePratique3b_Template.php">
<h1>Log In</h1>
<fieldset id="inputs">
<input id="username> type="text"
placeholder="Username" autofocus required>
<input id="password" type="password"
placeholder="Password" required>
</fieldset>
<fieldset id="actions">
<input type="submit" id="submit" value="Log in">
</fieldset>
</form>
</html>

Et maintenant le Fichier b:

<!DOCTYPE html>
<html>
<head>
<title>Accès a Pratique3b</title>
</head>
<body>

<?php
if (isset($_POST['username']) AND $_POST['password'] == "goFoot12") // Si le mot de passe est bon
{
// On affiche les codes
?>
<h1>Bienvenu sur notre site</h1>
<p><strong>Club de Soccer de Saint-Hubert</strong></p>

<p>
Cette page est réservée pour les clubs de soccer de la Montérigie, veuillez nous visiter souvent pour vous tenir au courant des développements et nouveautés.<br />
Le Club de Soccer de Saint-Hubert vous remercie de votre visite.
</p>
<?php

if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
}
else // Sinon, on affiche un message d'erreur
{
echo '<p>Mot de passe non valide, veuillez recommencer</p>';
}
?>


</body>
</html>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

14 août 2016, 14:00

Bonjour,

Merci de ne pas écrire les titres tout en majuscules, j'ai modifié ton titre en conséquence. Par ailleurs, nous n'allons pas faire ton exercice à ta place.
Quel est le problème que tu rencontres en fait ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 15 Messages

14 août 2016, 23:23

Bonjour,
Je voulais juste savoir si j'étais dans la bonne voie car quand je rentre mon mot de passe cela me donne toujours mot de passe invalide, veuillez recommencer, j'ai peut-être oublié un petit quelques choses.

Merci!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

15 août 2016, 13:58

Ta condition qui vérifie le mot de passe est celle ci :
if (isset($_POST['username']) AND $_POST['password'] == "goFoot12")
Donc fait des var_dump() de chaque variable juste avant la condition pour vérfifier et comprendre d'où vient le problème
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

15 août 2016, 14:08

Ah non, j'ai trouvé, il faut que tu utilises && plutôt que AND
Cf la doc :
// "&&" a un précédence supérieure à "and"

// Le résultat de l'expression (true && false) est affecté à $g
// Agit comme : ($g = (true && false))
$g = true && false;

// La constante true est affectée à $h, puis, false est ignoré
// Agit comme : (($h = true) and false)
$h = true and false;

var_dump($g, $h);

// Va renvoyer :
// bool(false)
// bool(true)
Quand tout le reste a échoué, lisez le mode d'emploi...