Page 1 sur 1

PHP Détection de mot de passe

Posté : 13 mai 2014, 16:08
par Perlinkins
Bonjour,

Je suis actuellement confronté, je pense, à un problème de syntaxe sur un exercice de PHP.
L'objectif est de créer une page d'identification et, dans un premier temps, d'assurer une redirection en fonction de l'entrée du mot de passe. S'il est correct alors on arrive sur une page de blog, s'il est incorrect on est redirigé (à savoir qu'on a une consigne de plus où on peux autoriser trois entrée login/mot de passe avant la redirection, mais cet fonction semble bien fonctionner).

Je vous transmets mon code PHP chargé de gérer les différentes situations :
<?php

$mdp=$_post["password"];

if($mdp=="123"||$mdp=="234"||$mdp=="345")
{
header('Location: blogdeflo.php');
}
else
{
session_start();
$_SESSION['nbconnect']=$_SESSION['nbconnect']+1;

	if ($_SESSION['nbconnect']<=3) {
	header('Location: logindeflo.php');
	}
	else {
	header('Location: http://www.google.com/');
	}
}

?>
Je pense qu'il y a un soucis dans la première partie sensée autoriser l'entrée de l'utilisateur s'il entre les mots de passes 123, 234 ou 345. Car le résultat, quelque soit le mot de passe entré, est toujours la redirection (ou vers la page de connexion les 3 premières fois, ou vers Google au bout de la troisième tentative infructueuse).

Pourriez-vous m'éclairer sur la question ?

Merci d'avance.

Re: PHP Détection de mot de passe

Posté : 13 mai 2014, 17:08
par telnes
hello
$mdp=$_post["password"];
=>
$mdp=$_POST["password"]; // en maj

Re: PHP Détection de mot de passe

Posté : 14 mai 2014, 08:16
par sirakawa
Règles de débogage que tout prof digne de ce nom devrait enseigner
La cause de l'erreur est toujours antérieure à l'apparition de l'erreur ou à son signalement.
Quand une variable ne fait pas ce qu'on voudrait, il faut en afficher la valeur.
ainsi:
$mdp=$_post["password"];

if($mdp=="123"||$mdp=="234"||$mdp=="345")
deviendrait
$mdp=$_post["password"];
var_dump($mdp);
if($mdp=="123"||$mdp=="234"||$mdp=="345")
et la question serait de savoir pourquoi $mdp est vide.
Alors, si on ne comprend toujours pas:*
$mdp=$_post["password"];
var_dump($_post);
if($mdp=="123"||$mdp=="234"||$mdp=="345")
De plus, il serait bon de présenter le code toujours de la même façon:
<?php

$mdp=$_post["password"];

/*ici l'accolade est rejetée à la ligne, ce que je préfère*/
if($mdp=="123"||$mdp=="234"||$mdp=="345")
{
header('Location: blogdeflo.php'); //mais le code n'est pas indenté
}
else
{
session_start(); //indentation ? pourrait être mis sans dommage au début du fichier, même s'il ne sert pas dans tous les cas.
$_SESSION['nbconnect']=$_SESSION['nbconnect']+1; //indentation? A quel moment est créée la variable $_SESSION['nbconnect'] ?
         //ici l'accolade  est en bout de ligne : us²age courant; il faut choisir)
         if ($_SESSION['nbconnect']<=3) {
         header('Location: logindeflo.php');//indentation?
         }
         else {
         header('Location: http://www.google.com/');//indentation?
         }
}

?>

Re: PHP Détection de mot de passe

Posté : 14 mai 2014, 09:54
par moogli
pour étayer les remarque sur la mise en forme :
http://a-pellegrini.developpez.com/tuto ... ing-style/ (par exemple).


@+