Authentification HTTP au moyen d'une bdd.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Authentification HTTP au moyen d'une bdd.

par Anémone » 31 déc. 2007, 18:24

Bonjour,

L'intêret des accolades est de pouvoir traiter une valeur extraite d'un tableau à l'intérieur d'une chaîne de caractères, mais cela va à l'encontre de ce que tu préconisais précédemment (d'où le fait que tu ne voies pas l'intérêt de cette syntaxe).
Ensuite, effectivement, je n'ai pas retrouvé, en faisant
print_r($_SERVER);
les variables utilisées dans le script. J'aurais aussi bien pu m'en rendre compte en faisant phpinfo(), non?
Il s'agirait donc d'un problème de version, et je vais devoir penser à une authentification via les sessions. Dommage, ce script compact me plaisait bien...
Merci pour tes réponses.

par zeus » 31 déc. 2007, 01:12

Tout d'abord, j'avoue ne pas comprendre quelle est l'utilité des caractères { et }.

Sinon, fait un
print_r($SERVER);
et tu verras si les variables existent ou non.
Si elles n'existent pas, ce n'est pas la requête qui ne fonctionne pas, mais l'authentification HTTP ;)

par Anémone » 31 déc. 2007, 01:09

En fait, j'obtiens
SELECT clef_utilisateur FROM utilisateur WHERE login='' AND mot_de_passe=''
et la syntaxe
login='{$_SERVER['PHP_AUTH_USER']}'
	AND mot_de_passe='{$_SERVER['PHP_AUTH_PW']}'
me parait correcte. Tout se passe comme si les variables ne prenaient pas les valeurs saisies dans la fenêtre de demande d'authentification, et je ne parviens pas à comprendre pourquoi.

par zeus » 30 déc. 2007, 20:36

Quand tu as affiché ta requête, tu as dû voir un truc de ce genre

Code : Tout sélectionner

SELECT clef_utilisateur FROM utilisateur WHERE login='{lelogin} AND mot_de_passe=PASSWORD('{lepassword}')
Est-ce que tu crois que cette syntaxe est correcte ?

par Invité » 30 déc. 2007, 20:35

Bonjour à toi,

Ta remarque m'a amenée à changer ce bout de code:

mot_de_passe=PASSWORD('{$_SERVER['PHP_AUTH_PW']}')
en
mot_de_passe='{$_SERVER['PHP_AUTH_PW']}'
Mais les symptômes restent les mêmes...

par zeus » 30 déc. 2007, 18:42

fait un
echo $sql
après la création de ta requête, tu verras apparaitre le soucis

PS : il faut toujours extraire les variables des chaines
echo "valeur : ". $value ." unité(s)";
Plutôt que
echo "valeur : $value unité(s)";

Authentification HTTP au moyen d'une bdd.

par Anémone » 30 déc. 2007, 18:07

Bonjour,

J'ai travaillé en local avec ce script d'authentification, mais sans succès. J'espérais réussir en distant, pas mieux:
$auth = FALSE;

if ((isset($_SERVER['PHP_AUTH_USER']) AND
	isset($_SERVER['PHP_AUTH_PW'])))
{
//Script de connexion à la base de données OK

	$sql="SELECT clef_utilisateur FROM utilisateur WHERE login='{$_SERVER['PHP_AUTH_USER']}'
	AND mot_de_passe=PASSWORD('{$_SERVER['PHP_AUTH_PW']}')";
	$requete=mysql_query($sql);
	$ligne=@mysql_fetch_array($requete);
	
	if($ligne)
	{

	$auth = TRUE;
	}
	}

	if(!$auth)
	{
	header('WWW-Authenticate: Basic realm="acces securise au backoffice"');
	header('HTTP/1.0 401 Unauthorized');
	}
	
Après avoir saisi login et mot de passe extraits de la base, la page en haut de laquelle se trouve ce script devrait s'ouvrir, or c'est la fenêtre de saisie qui réapparait. Si je clique sur le bouton "annuler" de ladite fenêtre, j'ouvre la page protégée...
Merci d'avance pour votre aide, et meilleures salutations