Comment faire un accès limité vers un forum ?

Eléphanteau du PHP | 17 Messages

21 févr. 2007, 16:40

Bonjour,


j'ai mis en place un forum (PunBB) auquel on est censé pouvoir accéder uniquement si l'on provient d'un endroit bien précis (appelons-le "lien X" ).


Seulement je ne sais pas trop comment mettre en place cette "protection".


Au début j'avais prévu d'intégrer dans le "lien X" une variable transmise par GET, qui permettrait un accès au répertoire /forum (pour l'instant en chmod 754), mais ça ne marche pas :??:


Si j'utilise un htaccess, je me retrouve avec l'obligation de proposer aux visiteurs "autorisés" d'entrer un login et un mdp (ce que je ne souhaite pas).

J'ai lu que l'on pouvait utiliser un lien pour accéder à une page sécurisée, genre http://user:password@quelquechose.


Vous avez une idée ? merci
Si je dis que ce n'est pas une signature, est-ce une signature ?

Mammouth du PHP | 843 Messages

21 févr. 2007, 17:02

Pour avoir acces à ce lien X, je suppose que ton visiteur doit être connecté :-k

le problème vient donc du fait de "si l'utilisateur appel directement la page du forum en tapant l'url ou par un favoris".

Solution, un petit script de verification à inserer sur ton forum qui va verifier si l'utilisateur est connecté. Si oui, on continue et si non, on redirige vers page d'identification.

regarde si il est facile de mettre en place un require("url_du_script_de_verif.php"); sur chacunes des page de ton forum.
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphanteau du PHP | 17 Messages

21 févr. 2007, 17:23

Effectivement, tu soulèves un point important que j'ai oublié de préciser :
ce "lien X" se trouve sur un autre site (autre hébergement, autre nom de domaine), ce qui complique la chose helas :?

Donc oui, le visiteur est censé s'être déjà connecté une première fois, mais sur un autre site :wink: , la "passerelle" avec le forum permettant par la-même un accès à ce dernier.
Si je dis que ce n'est pas une signature, est-ce une signature ?

Mammouth du PHP | 843 Messages

21 févr. 2007, 19:55

Sans doute va tu devoir passer ces paramètres de connection à l'url comme tu le disais si bien ;)

sauf si bien sur tu utilise les cookies pour l'identification ;)

après si tu n'utilise pas les cookie mais les sessions, je ne sait pas si il est possible de rediriger vers les fichier de sessions du premier site :-k
mais dans ce cas, à mon avis tu devrait reproposer un log à l'arriver sur ton forum (un simple .htpasswd serai le plus simple)

sinon pour ton histoire de http://user:password@quelquechose, je connais pas du tout :oops:
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphanteau du PHP | 17 Messages

21 févr. 2007, 22:46

Heu, je ne sais pas si l'identification effectuée sur le premier site est à base de cookies ou de sessions (le site était déjà en place quand je suis arrivé :lol:). Ceci dit je vais me renseigner.

Pour ta proposition de se logger une 2ème fois, elle présente un hic :
c'est que l'internaute se logge une première fois sur le premier site devra de toute façon, en plus, se connecter au forum avec ses pseudo et mdp quoiqu'il arrive, c'est pourquoi il faut à tout prix que l'autorisation de lecture du forum se fasse de manière automatique :? (je ne sais pas si je suis très clair).

Toujours est-il que, j'ai réussi à rendre l'autorisation de lecture effective à l'aide de "http://user:password@quelquechose", où "user" et "password" ont la meme valeur que celle renseignée dans le htpasswd. Seul problème : ça ne marche pas vraiment sous IE :cry:
Si je dis que ce n'est pas une signature, est-ce une signature ?

Eléphanteau du PHP | 17 Messages

22 févr. 2007, 23:09

Ce que j'avais tenté au début, plutot que de m'embourber dans les fichiers htaccess et htpasswd, c'était de réaliser un script de redirection qui vérifie, par le biais d'un GET, que l'on provient bien de l'URL attendue.
<?php
if ($acces != 'mot_de_passe')
{
	header("Location: http://www.siteBIBI.fr");
}
else
{
	header("Location: http://www.siteBIBI.fr/forum/index.php");
	exit;
}
?>
Le problème est que l'accès au dossier /forum doit être protégé par une manipulation sur le chmod, mais je n'arrive pas à trouver quel mode mettre. Soit j'arrive toujours à accéder au forum, soit jamais. C'est assez relou je dois dire :/

Quel CHMOD dois-je mettre svp ?
Si je dis que ce n'est pas une signature, est-ce une signature ?

Mammouth du PHP | 505 Messages

23 févr. 2007, 11:58

Je pense que tu es sur une mauvaise piste, et je ne vois pas trop de solution a ton pb de chmod... Les droits d'acces a un rep via apache sont oui ou non, y a pas de condition qui puisse venir de l'exterieur...


AMHA, la solution de ton probleme se situe plus au niveau de la config apache.

En utilisant le mod rewrite, tu peux verifier le referer et autoriser l'acces a l'index...
qq chose du genre
RewriteCond %{HTTP_REFERER} !^http://www.votredomaine.net/.*$ [NC]
RewriteCond %{REQUEST_FILENAME} ^/url d'acces au forum/
RewriteRule .* - [L]

c'est l'idée, il faut creuser un peu plus pour affiner. car une fois sur le forum, il ne faut plus avoir a utliser l'url dacces au forum puis ton referer sera toi meme.
Le pb, c'est que le referer n'est pas toujours transmis par certain proxy etc...

Bref, c'est pas absolu.
Tu ne peux pas uiliser de cookie ou session vu que c'est pas le meme domain, il ne seront pas visible.

Une derniere possibilité, serait d'avoir sur le serveur du forum une page accessible uniquement au site qui donne l'acces, cette page genere un jeton.
Et quand tu essais d'accéder au forum, il te file une url avec le jeton en parametre, et quand tu arrive sur le forum, tu verifie que le jeton est valide, et tu donne l'acces et détruit le jeton. A bien y reflechier, c'est certainement la solution la plus fiable.