8791 sujets

Développement web côté serveur, CMS

Pages :
Bonjour,

Est-il possible d'orienter des visiteurs vers des pages html différentes en fonction de leur mot de passe (géré par htaccess) ? Merci de votre aide.
Modifié par Mandes (25 Jun 2007 - 11:02)
Oui biensur

en php tu peux récupérer le nom d'utilisateur via la variable globale

$_SERVER['PHP_AUTH_USER']


donc apres avoir tester cette variable tu peux rediriger vers la page que tu veux avec un switch() par exemple .
Merci pour cette réponse.
Mais t'aurais pas un exemple concret sous la main parce que là je nage totalement... Smiley confused
Modifié par Mandes (25 Jun 2007 - 13:13)
imaginons qu'il y ait 2 utilisateurs qui doivent être rédirigé vers leur home page respectives et tous les autres vers home.php

1 - michel dont la page d'accueil est michel.php
2 - roger dont la page d'accueil est roger.php


$user = $_SERVER['PHP_AUTH_USER'];

$path = 'http://www.mondomaine.tld/mondossier/';

switch($user) {
  case 'michel':
    $redir = 'michel.php';
  break;
  case 'roger':
    $redir = 'roger.php';
  break;
  default:
     $redir = 'home.php';
  break;
}

header('Location: '.$path.$redir);

Modifié par PeterPetrelli (25 Jun 2007 - 13:21)
Merci pour cette réponse ultra rapide mais... dernière chose (excuse ma profonde nullité stp)...

Ou dois je coller (puis adapter) ton code ? (dans .htaccess, htpasswd, autre ?)

Que doit contenir "mondossier" ? :
$path = 'http://www.mondomaine.tld/mondossier/';

Merci encore infiniment pour tes éclaircissements. Smiley cligne
Modifié par Mandes (25 Jun 2007 - 13:32)
ce code doit etre placé dans un fichier php

idéalement sur l'index du repertoire qui est protéger par ton htaccess

apres le

$path = 'http://www.mondomaine.tld/mondossier/';

n'est là qu'a titre d'exemple tu dois l'adapter à ton arborescence ( la ou ce trouve michel.php et roger.php )
Pigé ! (enfin je pense...) Smiley cligne
Je teste ça dès ce soir. Merci pour ta grande patience PeterPetrelli.
Pourriez vous me dire ce qui ne va pas svp ? Merci de votre aide.
Voilà ce que j'ai fait :

Ci-après 2 liens pointant vers la zone protégée par mot de passe :

<A HREF="/clients/Mandes/mandes.html">Lien 1</A>
<A HREF="/clients/Zucchero/zucchero.html">Lien 2</A>


----------------------------------------

Là le contenu d'.htaccess :

AuthUserFile /home/ju51163/clients/.htpasswd
ErrorDocument 401 /zone_interdite.html
AuthName "Page protégée"
AuthType Basic 

<limit GET POST>
require valid-user
</Limit>


----------------------------------------

Et voilà le fichier que j'ai appellé code.php et que j'ai placé dans
le dossier "Clients"

$user = $_SERVER['PHP_AUTH_USER'];
$path = 'http://www.monsite.fr/clients/';
switch($user) {
  case 'Mandes':
    $redir = '/Mandes/mandes.html';
  break;
  case 'Zucchero':
    $redir = '/Zucchero/zucchero.html';
  break;
  default:
     $redir = 'index.html';
  break;
}
header('Location: '.$path.$redir);


----------------------------------------

htpasswd :

Mandes:qkROTMyN71myI
Zucchero:zefdrh24N71myI
Là à aucun moment on appel le fichier code.php à priori ...

2 solutions :

- tes 2 liens pointent vers code.php et c'est lui qui redirige la requete .


- tu inclus le fichier code.php dans tes pages ( avant le header ) , et dans ce cas tes fichiers doivent tous porter l'extension php
Merci pour ce suivi PeterPetrelli.
Donc je fais :

<A HREF="/clients/code.php">Lien 1</A>
<A HREF="/clients/code.php">Lien 2</A>


Et je laisse les autres fichiers tel quel. Bien...
J'ai un peu de mal à comprendre comment code.php fait pour comprendre que .htpasswd est valide ou non mais j'essaye ce soir et vous tiens au courant. Merci infiniment surtout !
Bonjour,

Alors voilà... J'y suis presque ! Mais avec le code ci-dessous le prb est que si je tape un mot de passe valide (soit Mandes, soit Zucchero) je suis renvoyé vers index.html ?!!
(par contre un mot de passe invalide renvoi vers la page d'erreur, donc ça c'est ok)
Si vous avez une idée... Merci encore !

Lien pointant vers page protégée :
<A HREF="/clients/01.pdf">Lien 1</A>
<A HREF="/clients/02.pdf">Lien 2</A>


----------------------------------------

Là le contenu d'.htaccess :

AuthUserFile /home/ju51163/clients/.htpasswd
ErrorDocument 401 /zone_interdite.html
AuthName "Page protégée"
AuthType Basic 

<limit GET POST>
require valid-user
</Limit>


----------------------------------------

Et voilà le fichier que j'ai appellé code.php et que j'ai placé dans
le dossier "clients"

<?php
$user = $_SERVER['PHP_AUTH_USER'];
$path = 'http://www.monsite.fr/';
switch($user) {
  case 'Mandes':
    $redir = 'clients/01.pdf';
  break;
  case 'Zucchero':
    $redir = 'clients/02.pdf';
  break;
  default:
     $redir = 'clients/index.html';
  break;
}
header('Location: '.$path.$redir);
?>


----------------------------------------

Mandes:qkROTMyN71myI
Zucchero:zefdrh24N71myI 

Modifié par Mandes (27 Jun 2007 - 14:22)
une fois de plus dans ton code tu n'appel pas le fichier censer gérer les redirections ....

ca devrait etre :


<a href="/clients/code.php">Lien 1</a>
<a href="/clients/code.php">Lien 2</a>


et biensur que code.php , 01.pdf et 02.pdf soient placé dans le dossier /clients

mais en toute logique tu ne devrais avoir qu'un seul lien vu que c'est l'authentification qui détermine la redirection


<a href="/clients/code.php">Lien</a>


ensuite tu as ton .htaccess placé à la racine de /clients
et ton code.php qui ce charge de rediriger vers le bon fichier en fonction du user.
Bonjour et merci pour ta réponse PeterPetrelli.
En fait, j'avais bien mis le lien pointant vers code.php comme suit :

<A HREF="/clients/code.php">Lien1</A>
<A HREF="/clients/code.php">Lien2</A>


Et tout est correctement placé comme indiqué dans ton post (tous les fichiers sont dans le dossier "clients" sauf évidemment la page qui contient le code ci-dessus)

.htaccess :

AuthUserFile /home/ju52263/clients/.htpasswd
ErrorDocument 401 /zone_interdite.html
AuthName "Page protégée"
AuthType Basic
<limit GET POST>
require valid-user
</Limit>


.htpasswd :

Mandes:wOxet7FaM.XVI
Zucchero:hMjH5d3OqwyvE


code.php :

<?php
$user = $_SERVER['PHP_AUTH_USER'];
$path = 'http://www.monsite.fr/clients/';
switch($user) {
 case 'Mandes':
   $redir = '01.html';
 break;
 case 'Zucchero':
   $redir = '02.html';
 break;
 default:
    $redir = 'erreur.html';
 break;
}
header('Location: '.$path.$redir);
?>


Mais toujours le même problème, c'est fou : Smiley confus
Mot de passe correct : redirection vers erreur.html (default) ?!!!

Mot de passe incorrect : retour sur htaccess (ça c'est bon)
Impossible donc d'accéder à 01.html et 02.html Ca c'est dingue...
Comprends tu ce qui se passe stp ? Merci d'avance et bonne journée. Smiley cligne
Modifié par Mandes (28 Jun 2007 - 09:04)
Ton htaccess doit etre placé dans /clients

l'arborescence doit etre comme ca en suppossant que le dossier www est la racine de ton site

/www/index.php ( le fichier qui contient les liens )
/www/clients/.htaccess
/www/clients/code.php
/www/clients/01.tml
/www/clients/02.tml

les liens de index.php pointent donc vers clients/code.php
Merci pour cette réponse. Tous les fichiers cités par tes soins sont placés comme tu l'a indiqué et j'ajoute que le fichier .htpasswd est aussi dans le dossier "clients". C'est fou... Smiley rolleyes

.htaccess demande bien les mots de passe et dès qu'il a les bons, il redirige vers erreur.html...
Modifié par Mandes (28 Jun 2007 - 09:32)
essais de mettre


print($_SERVER['PHP_AUTH_USER']) ;
exit();


pour voir ce qu'il t'affiche .

et petite question de quel type de serveur dispose tu ? version de php ? apache ? etc ..
J'ai posé la question à mon hébergeur (nfrance - compte basic) pour ce qui concerne le serveur.
J'attends la réponse. Par contre,
print($_SERVER['PHP_AUTH_USER']) ; exit();
je le place où ? Faut tout me dire je sais dsl... Smiley confused
Modifié par Mandes (28 Jun 2007 - 14:00)
Réponse de l'hébergeur : les serveurs sont sous FreeBSD, Apache 1.3, php4 (safe_mode On), MySQL 3 ou 4 suivant les serveurs. Voili, voilou.

Que puis tenter maintenant stp ? Merci. Smiley cligne
Modifié par Mandes (28 Jun 2007 - 16:02)
place le bout de code en haut de code.php ( apres le <?php )

et pour le serveur ce qu'il faut savoir c'est si php est installé en tant que module d'apache ou en cgi .

car en cgi on à pas accès a ces variables ...

normalement apres t'etre identifé tu devrais voir le nom du suer apparaitre s'il n'apparait pas ya un soucis dans la config quelque part .
Modifié par PeterPetrelli (28 Jun 2007 - 16:59)
Pages :