Précision authentification http

tryop -  
Super_carotte Messages postés 1420 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai récemment commencé des cours sur l'authentification http, mais j'ai quelques problèmes de compréhension.
Je me suis donc renseigné sur php.net et j'ai vu ce morceau de code :

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
exit;
} else {
echo "<p>Bonjour, {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>Votre mot de passe est {$_SERVER['PHP_AUTH_PW']}.</p>";
}
?>

J'ai donc modifié le code pour qu'il puisse vérifier si le mot de passe et login sont correctes.
Voici le second code :
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
exit;
} else {
if ($_SERVER['PHP_AUTH_USER'] =='Kevin' && $_SERVER['PHP_AUTH_PW'] == 'Banane')
echo "<p>Bonjour, {$_SERVER['PHP_AUTH_USER']}.</p>";
else
echo "mauvais mot de passe ou nom de compte";
}
?>
Que faut'il faire dans le cas où l'utilisateur entre un mauvais mot de passe pour qu'il puisse réessayer ? (faut-il réinitialiser les variables ?)

11 réponses

Super_carotte Messages postés 1420 Date d'inscription   Statut Membre Dernière intervention   127
 
tu met le code de ton formulaire d'indentification dans une page. (login.php par exemple)
Et dans ton code tu rajoute une ligne comme ceci:
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
exit;
} else {
if ($_SERVER['PHP_AUTH_USER'] =='Kevin' && $_SERVER['PHP_AUTH_PW'] == 'Banane')
echo "<p>Bonjour, {$_SERVER['PHP_AUTH_USER']}.</p>";
else
echo "mauvais mot de passe ou nom de compte";
include('login.php');
}
?>
Comme ça l'utilisateur verra le message d'erreure et aura a nouveau le formulaire qui s'affiche pour pouvoir réésayer.
0
tryop
 
oui mais si je mets un mauvais mot de passe, la variable PHP_AUTH_USER est quand même enregistré, impossible de réutiliser l'authentification http, ça me met automatiquement "mauvais mot de passe ...."
0
tryop
 
petit up j'aimerais vraiment savoir comment faire
0
Super_carotte Messages postés 1420 Date d'inscription   Statut Membre Dernière intervention   127
 
Donne moi le code de ton formulaire d'identification
0

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

Posez votre question
Super_carotte Messages postés 1420 Date d'inscription   Statut Membre Dernière intervention   127
 
Au temps pour moi.

Je t'ai fait ce petit code qui devrait t'aider à comprendre:
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
exit;
} elseif ($_SERVER['PHP_AUTH_USER'] == 'banane' && $_SERVER['PHP_AUTH_PW'] == 'orange') {
echo "<p>Bonjour, {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>Votre mot de passe est {$_SERVER['PHP_AUTH_PW']}.</p>";
}else{
header('WWW-Authenticate: Basic realm="My Realm"');
}
?>

Si tu as un souci, préviens moi
0
Super_carotte Messages postés 1420 Date d'inscription   Statut Membre Dernière intervention   127
 
Meme code mais organiser plus intuitivement:
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
exit;
} elseif ($_SERVER['PHP_AUTH_USER'] != 'banane' && $_SERVER['PHP_AUTH_PW'] != 'orange') {
header('WWW-Authenticate: Basic realm="My Realm"');
}else{
echo "<p>Bonjour, {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>Votre mot de passe est {$_SERVER['PHP_AUTH_PW']}.</p>";
}
?>
0
Super_carotte Messages postés 1420 Date d'inscription   Statut Membre Dernière intervention   127
 
Ah, et pour info, je fais mes formulaire a la main (cad que je créé un formulaire moi meme, je passe pas par celui tout fait) pour l'identification. (comme beaucoup de développeur php il me semble)
Tu devrais essayer.
0
tryop
 
Merci pour cette réponse je vais tester ça de suite !

Edit : j'aurais eu plus de facilité à le faire à la main que de passer par un truc tout fait, c'est juste imposé pour mon projet.
0
Super_carotte Messages postés 1420 Date d'inscription   Statut Membre Dernière intervention   127
 
Petite erreure dans mon code précédent.
La correction:
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
exit;
} elseif ($_SERVER['PHP_AUTH_USER'] != 'banane' || $_SERVER['PHP_AUTH_PW'] != 'orange') {
header('WWW-Authenticate: Basic realm="My Realm"');
}else{
echo "<p>Bonjour, {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>Votre mot de passe est {$_SERVER['PHP_AUTH_PW']}.</p>";
}
?>
0
tryop
 
J'ai donc modifié ce que tu m'as marqué pour que le morceau de code aille cherché dans un fichier .txt le mot de passe et login d'un utilisateur, mais le programme me demande en boucle le login/mdp même lorsque je mets des données valides.
Voici le code modifier :

<?php
if (!isset($_SERVER['PHP_AUTH_USER']))
{
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
exit;
}
else
{
$temp1 = md5($_SERVER['PHP_AUTH_PW']); /*vérification du mdp/ndc dans la base*/
$flag = false;
$Identifiantmdp = fopen("mdpndc.txt","r");
while ($ligne=fgets($Identifiantmdp) and $flag = false)
{
$temp = explode(";",$ligne);
if ($_SERVER['PHP_AUTH_USER'] == $temp[0] && $temp1 == $temp[1])
{
$flag = True;
}
}
fclose($Identifiantmdp);
if($flag == false)
{
header('WWW-Authenticate: Basic realm="My Realm"');
}
else
{
echo "<p>Bonjour, {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>Votre mot de passe est {$_SERVER['PHP_AUTH_PW']}.</p>";
}
}
?>
0
Super_carotte Messages postés 1420 Date d'inscription   Statut Membre Dernière intervention   127
 
Je n'aime pas trop la lecture de fichier.
Fais tes tests avec une bdd mysql, ça te sera plus utile pour la suite de ton apprentissage.
Et post ton code avec la BDD mysql ici, je t'aiderai ;)
0