2010-08-13 3 views
4

Comment puis-je utiliser l'authentification de base HTTP et demander à l'utilisateur de soumettre son nom d'utilisateur et son mot de passe dans un formulaire HTML et de le faire authentifier en utilisant l'authentification de base HTTP.PHP HTTP Basic Auth en utilisant le formulaire

J'ai entendu qu'Internet Explorer ne prend plus en charge l'utilisation de http://user:[email protected], donc je ne connais pas la meilleure façon d'aborder cela.

L'utilisation de PHP et javascript et HTML est OK. Je ne veux pas utiliser PERL et je ne perds pas de grandes librairies javascript.

Si vous ne pensez pas que HTTP Basic Auth. est le meilleur moyen, s'il vous plaît recommander quelque chose de facile et simple à faire. Ce ne sera qu'un site de connexion pour 5-6 personnes. Pas besoin de le compliquer.

+1

Y at-il une raison pour laquelle il doit être sous une forme HTML? Sauf si vous utilisez une sorte de supercherie comme la chose http: // utilisateur: motdepasse @ website.com', l'authentification de base HTTP entraînera le navigateur à afficher une boîte contextuelle standard demandant le nom d'utilisateur et mot de passe. Serait-ce OK au lieu d'un formulaire HTML? – David

+0

Je veux qu'ils voient un formulaire HTML ... soumettez-le ... et demandez-leur de se connecter en utilisant l'authentification de base HTML ... Je ne veux pas que cette fenêtre popup s'affiche. – ParoX

+0

trop esthétique pour la connexion juste 5-6 personnes. –

Répondre

3

jQuery La bibliothèque a une fonction ajax qui a le paramètre "password" et "user" pour l'authentification. Lorsque l'utilisateur clique sur le login, tu peux obtenir la valeur du login et du mot de passe et passer à la fonction $ .ajax.

 
$('#submit').click(function() { 
    $.ajax({ 
     url: 'authenticated.php', 
     username: $('#login').val(), 
     password: $('#passwd').val(), 
     success: function(data) { 
     //do something with data from the server 
     } 
    }); 
    return false; 
}); 
0

Si je vous comprends bien, vous devez utiliser Htpasswd avec .htaccess: http://tools.dynamicdrive.com/password/

+0

Merci pour la suggestion; J'ai déjà fait l'installation. Actuellement, ils se connectent avec cette boîte popup moche. Je préfère avoir une forme stylée et la faire passer sur le site – ParoX

2

à mon humble avis, le point entier d'utiliser l'authentification HTTP est d'être capable de déléguer des tâches d'authentification:

  1. Le serveur web prend soin de refuser l'accès non autorisé aux ressources protégées
  2. Le navigateur prend en charge de demander le nom d'utilisateur et mot de passe requis

Vous avez donc un système de travail avec un minimum d'effort. Maintenant, si vous utilisez un formulaire HTML pour demander des informations d'identification, le serveur saura qui vous êtes mais le navigateur ne le fera pas: il demandera des informations d'identification dès qu'il trouvera l'en-tête de réponse WWW-Authenticate et le statut 401 code. Pour que cela fonctionne, le navigateur doit envoyer un en-tête de demande Authorization sur chaque demande HTTP; Toutefois, votre formulaire ne peut pas demander au navigateur d'envoyer l'en-tête HTTP approprié.

Bien sûr, vous pouvez écrire votre propre code d'authentification côté serveur en PHP, configurer le serveur pour analyser les fichiers statiques à travers elle et d'omettre 401 et WWW-Authenticate dès que vous obtenez les informations d'identification valides (qui doivent ensuite être stockés quelque part ailleurs , par exemple, une session PHP). Mais alors vous avez perdu tous les avantages de l'authentification HTTP: à ce stade, un gestionnaire de connexion personnalisé avec des sessions PHP sera une solution beaucoup plus facile.

Pour résumer:

  • Si vous avez besoin de simplicité, oublier HTML forme
  • Si vous avez besoin des formulaires HTML, écrivez votre propre code
-1

Comment puis-je utiliser le protocole HTTP de base Authentification et demander à l'utilisateur de soumettre son nom d'utilisateur et son mot de passe dans un formulaire HTML

Pas moyen.

veuillez recommander quelque chose de facile et de simple.

sessions, cookies.
google pour tutoriel PHP auth et obtenir plus de 9000 articles

Eh bien, l'un d'entre eux

<? 
if (isset($_POST['auth_name'])) { 
    $name=mysql_real_escape_string($_POST['auth_name']); 
    $pass=mysql_real_escape_string($_POST['auth_pass']); 
    $query = "SELECT * FROM users WHERE name='$name' AND pass='$pass'"; 
    $res = mysql_query($query) or trigger_error(mysql_error().$query); 
    if ($row = mysql_fetch_assoc($res)) { 
    session_start(); 
    $_SESSION['user_id'] = $row['id']; 
    $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; 
    } 
    header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); 
    exit; 
} 
if (isset($_GET['action']) AND $_GET['action']=="logout") { 
    session_start(); 
    session_destroy(); 
    header("Location: http://".$_SERVER['HTTP_HOST']."/"); 
    exit; 
} 
if (isset($_REQUEST[session_name()])) session_start(); 
if (isset($_SESSION['user_id']) AND $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) return; 
else { 
include 'your design here.php'; 
?> 
<form method="POST"> 
<input type="text" name="auth_name"><br> 
<input type="password" name="auth_pass"><br> 
<input type="submit"><br> 
</form> 
<? 
} 
exit; 
?> 

destiné à être mis dans le dossier et appelé require '/path/auth.php'; en haut de vos scripts

Questions connexes