Aller au contenu

[PHP]Explication du manuel: Identification HTTP


miouge

Messages recommandés

Bonjour !

Etant en train de feuilleter le manuel PHP.net là je rencontre des problème avec lidentification HTTP de type Digest... donc voila le code d'exemple fourni par php.net:

<?php
$realm = 'Restricted area';

//utilisateur => mot de passe
$users = array('admin' => 'mypass', 'guest' => 'guest');


if (!isset($_SERVER['PHP_AUTH_DIGEST'])) {
  header('HTTP/1.1 401 Unauthorized');
  header('WWW-Authenticate: Digest realm="'.$realm.
          '" qop="auth" nonce="'.uniqid().'" opaque="'.md5($realm).'"');

  die('Texte utilisé si le visiteur utilise le bouton d\'annulation');
}

// analyse la variable PHP_AUTH_DIGEST
preg_match('/username="(?P<username>.*)",\s*realm="(?P<realm>.*)",\s*nonce="(?P<nonce>.*)",\s*uri="(?P<uri>.*)",\s*response="(?P<response>.*)",\s*opaque="(?P<opaque>.*)",\s*qop=(?P<qop>.*),\s*nc=(?P<nc>.*),\s*cnonce="(?P<cnonce>.*)"/', $_SERVER['PHP_AUTH_DIGEST'], $digest);

if (!isset($users[$digest['username']]))
  die('Nom d\'utilisateur invalide!');


// Génération de réponse valide
$A1 = md5($digest['username'] . ':' . $realm . ':' . $users[$digest['username']]);
$A2 = md5($_SERVER['REQUEST_METHOD'].':'.$digest['uri']);
$valid_response = md5($A1.':'.$digest['nonce'].':'.$digest['nc'].':'.$digest['cnonce'].':'.$digest['qop'].':'.$A2);

if ($digest['response'] != $valid_response)
  die('Mauvaise Pièces d\'identité!');

// ok, utilisateur & mot de passe valide
echo 'Vous êtes identifié en tant que : ' . $digest['username'];

?> 

url

Et deja ce que j'arrive pas à comprendre... c'est uniqid()... qui me renvoi une erreur lorsque j'essaye le script... et aussi je ne comprend pas... l'expression rationelle qu'ils utilisent ?

Un peu d'explicatoin svp :)

Merci !

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...