Précision authentification http

Fermé
tryop - 6 mars 2014 à 15:05
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 - 8 mars 2014 à 17:10
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 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
Modifié par Super_carotte le 6/03/2014 à 17:27
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
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
petit up j'aimerais vraiment savoir comment faire
0
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
7 mars 2014 à 12:43
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 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
7 mars 2014 à 12:55
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 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
7 mars 2014 à 12:58
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 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
7 mars 2014 à 12:59
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
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 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
7 mars 2014 à 15:05
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
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 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
8 mars 2014 à 17:10
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