Obliger à rentrer par le site pour accéder à un forum

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

Limerick
Nouveau WRInaute
 
Messages: 6
Inscription: Jeu Jan 20, 2005 17:43

Obliger à rentrer par le site pour accéder à un forum

Message le Sam Jan 22, 2005 10:45

Bonjour à tous,

Tout d'abord, j'ai bien lu tout ça, mais il doit bien me manquer quelques bases... :(



J'ai un site en PHP que j'ai fait avec DAlbum et auquel on accède par une page de login. L'adresse du site est du type www.example.com.

J'ai un forum PunBB, également en PHP, auquel on peut accéder par un lien placé sur le site. L'adresse du forum est du type www.example.com/forum/index.php

Ce site et ce forum sont à usage strictement privé puisque pour un groupe famille-amis qui sont un peu éparpillés partout dans le monde.


Ce que je cherche à faire, c'est de ne pouvoir accéder au forum que si l'on passe préalablement par le site. Je ne veux pas que l'on puisse accéder au forum plus ou moins directement et que l'on s'y inscrive.

Je souhaiterais que ce ne soit qu'après être passé par le site, que l'on puisse s'inscrire sur le forum.

Autrement dit, je souhaiterais qu'on ne puisse même pas s'enregistrer sur le forum, si l'on a pas préalablement été invité sur le site.

En revanche, après être passé par le site et s'être loggé au forum, il faudrait que l'utilisateur ne soit pas gêné de quelques manières que ce soit (le forum utilise les cookies permettant de reconnaître l'utilisateur). Or il ya un petit (?) problème.



J'ai une solution quasi-parfaite avec .htaccess et le Referer (voir le code ci-dessous), mais il y a juste un petit point qui bloque.

En effet, quand j'ai une redirection interne et automatique après le login ou l'envoi d'un message, bref dès qu'il y a (si mon interprétation est la bonne) une URL qui contient php?, alors c'est comme si le Referer n'était pas reconnu.

Donc pour l'instant j'essaye d'apprendre comment faire en sorte que TOUTES les URL contenant le terme monsite.com soient reconnues comme telles. Même s'il y a crac-boum-hue écrit devant ou crac-boum-hue écrit derriere...

Pour l'instant il y a ça écrit dans mon .htaccess

Code: Tout sélectionner
SetEnvIfNoCase Referer "^http://www.monsite.com/" local_ref=1
Order deny,allow
deny from all
allow from env=local_ref



Et ça marche bien : tout ce qui ne vient pas de www.monsite.com est effectivement rejeté (Erreur 403) quand on essaye par exemple, avec www.example.com/forum/register.php ou www.example.com/forum/login.php ou bien encore www.example.com/forum/index.php.

Alors, en fait le plus simple pour moi serait juste de compléter ce code pour atteindre le but décrit ci-dessus.

Bien sûr, si c'était possible, j'aimerais bien parvenir à mes fins sans avoir à refaire tout le site et le forum :?

Si c'est possible, je suis preneur ;)


Merci beaucoup, déjà, d'avoir lu tout ça :oops: et pour votre aide, si vous pouvez...

Lim :)

PS : Au fait, j'espère que j'ai posté dans le bon forum... :?

Edit HawkEye: example.com svp


Phix
WRInaute impliqué
WRInaute impliqué
 
Messages: 420
Inscription: Mar Juin 15, 2004 22:05

Message le Sam Jan 22, 2005 18:17

Bonjour,
personnellement je n'utiliserai pas une technique basée sur le referer, car cette donnée n'est pas assez fiable sachant qu'on peut facilement soit la désactiver soit la changer avec certains navigateurs.
Je pense qu'une simple variable de session serait suffisante, tu l'initialiserais sur la page d'accueil de ton site et ensuite, a chaque page de ton forum tu testes si cette variable a été initialisée, si ce n'est pas le cas tu renvoies l'utilisateur sur ta page d'accueil. Au moins y a pas besoin de cookies, et ce système se programme en très peu de temps...
Voilà, j'espère avoir pu t'aider.

Limerick
Nouveau WRInaute
 
Messages: 6
Inscription: Jeu Jan 20, 2005 17:43

Message le Sam Jan 22, 2005 18:51

Bonsoir Phix,

Merci pour ton aide.

Effectivement, cette solution m'a déjà été proposée mais je l'écarte - pour le moment - pour 3 raisons :

1) Le site et le forum ne sont pas si importants que ça, ils sont juste à usage privé.

2) Je ne suis pas loin (je l'espère) d'un solution avec le .htaccess (voir plus bas).

3) Enfin, le site (DAlbum) et le forum (PunBB) sont générés dynamiquement et, si je suis capable d'y inclure quelques lignes de programmes, je suis totalement incapable de les écrire car ignorant de ces choses savantes.



Pour ce qui du .htaccess, j'ai progressé dans le sens où je pense avoir identifié le fait qu'il ne sache pas interpréter le code suivant qu'il y a dans la page qui précéde l'Erreur 403 :

Code: Tout sélectionner
<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="refresh" content="5;URL=http://www.monsite.com/forum/index.php" />
<title>Forum de monsite.com / Redirection</title>
<link rel="stylesheet" type="text/css" href="style/Hydrogen.css" />
</head>
<body>

<div id="punwrap">
<div id="punredirect" class="pun">

<div class="block">
   <h2>Redirection</h2>
   <div class="box">
      <div class="inbox">
         <p>Connexion r&eacute;ussie. Redirection &hellip;<br /><br /><a href="http://www.monsite.com/forum/index.php">Cliquez ici si vous ne voulez pas attendre (ou si votre navigateur ne vous redirige pas).</a></p>
      </div>
   </div>
</div>



</div>
</div>

</body>
</html>


Et plus particulièrement la partie Meta Refresh puisque si je clique sur le lien de redirection proposé, je ne rencontre alors pas de problème.

Le lien est donc reconnu par le .htaccess, mais pas le "Refresh".

Y a-t-il donc un moyen de faire reconnaître ce "Refresh" par le .htaccess ?

Limerick
Nouveau WRInaute
 
Messages: 6
Inscription: Jeu Jan 20, 2005 17:43

Message le Dim Jan 23, 2005 16:16

Bon, comme ma question n'a pas l'air d'inspirer grand monde et que j'ai un peu progressé dans mes recherches, je m'en vais la reformuler - je l'espère - plus explicitement.


Sur mon forum, j'ai une page de redirection automatique qui contient une ligne que j'appelle - abusivement peut-être - "Meta Refresh" de ce type :

Code: Tout sélectionner
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="refresh" content="5;URL=http://www.monsite.com/forum/index.php" />


D'autre part, je souhaite ne pouvoir laisser accéder au forum que ceux qui proviennent de monsite.com

J'ai donc écrit le .htaccess suivant :

Code: Tout sélectionner
SetEnvIfNoCase Referer "^http://www.monsite.com/" local_ref=1
Order deny,allow
deny from all
allow from env=local_ref



Cela fonctionne bien, hormis que le Meta dont je parle plus haut n'est pas reconnu par le .htaccess, et donc, quand apparaît la page de redirection automatique, j'obtiens une Erreur 403.

Seulement, si je clique sur le lien pour ne pas attendre, tout se passe normalement.

J'en déduis donc que c'est la fonction Redirection Automatique du "Meta Refresh" qui n'est paas reconnue par le code écrit dans le .htaccess.

Ma question est donc la suivante : comment faire pour que le "Meta Refresh" soit lui aussi reconnu comme provenant d'une page de monsite.com ?

On pourrait penser à quelque chose du style :

Code: Tout sélectionner
SetEnvIfNoCase Referer "^http://www.monsite.com/" local_ref=1
SetEnvIfNoCase Referer "Meta Refresh" local_ref=1
Order deny,allow
deny from all
allow from env=local_ref


Bien sûr, ce n'est pas ça, mais c'est juste pour vous donner une idée de ce que je recherche.

Je ne connais pas la syntaxe de programmation en générale, et celle de .htaccess en particulier...

Si quelqu'un pouvait m'aider :)

Merci à vous


Phix
WRInaute impliqué
WRInaute impliqué
 
Messages: 420
Inscription: Mar Juin 15, 2004 22:05

Message le Dim Jan 23, 2005 19:26

Essaie de vérifier:
Code: Tout sélectionner
SetEnvIfNoCase Referer "^http://www.monsite.com/" local_ref=1

je ne m'y connais pas trop en expressions régulières et en htaccess, mais n'est-ce pas cette variable: %{HTTP_REFERER} qui te donne l'adresse de referer?

Pour ce qui est de la technique des sessions dont je t'ai parlé, tu as juste quelques lignes à rentrer:
Lorsque tu as authentifié le passage par la page d'accueil
Code: Tout sélectionner
$_SESSION['authentifie'] = 1;


et,
au tout début de ta page qui génère les pages de ton forum (regarde l'index.php):
Code: Tout sélectionner
session_start();
if(! (isset($_SESSION['authentifie']) && $_SESSION['authentifie'] == 1) ) {
//variable non initialisée donc redirection vers la page d'accueil
}


C'est quand même assez simple non? :)

Bonne soirée et bon courage...

Limerick
Nouveau WRInaute
 
Messages: 6
Inscription: Jeu Jan 20, 2005 17:43

Message le Lun Jan 24, 2005 0:03

Bonsoir Phix,

Merci pour tes encouragements :D

Alors soit je n'ai compris et/ou fait ce qu'il fallait, soit y a un autre problème, mais ça ne marche pas :(

Voici ce que j'ai fait.

J'ai mis
Code: Tout sélectionner
$_SESSION['authentifie'] = 1;
au début du code dans la page d'accueil du site qui suit celle de login (qui est une page index.php)

puis

j'ai mis
Code: Tout sélectionner
session_start();
if(! (isset($_SESSION['authentifie']) && $_SESSION['authentifie'] == 1) ) {
//variable non initialisée donc redirection vers la page d'accueil
}
au début du code de la page index.php du forum (qui n'est pas la même que celle du site, évidemment).

Ca doit être plus compliqué que ça :?


Phix
WRInaute impliqué
WRInaute impliqué
 
Messages: 420
Inscription: Mar Juin 15, 2004 22:05

Message le Lun Jan 24, 2005 13:56

Alors soit je n'ai compris et/ou fait ce qu'il fallait, soit y a un autre problème, mais ça ne marche pas

Qu'est-ce qui ne marche pas? As-tu des erreurs php?
Fais bien attention à ce que session_start() soit la premiere instruction de ta page, il ne doit rien avoir avant, meme pas un espace ou un retour a la ligne. Tu dois aussi mettre ce session_start() au début de la page dans laquelle tu placeras l'authentification ("la page d'accueil du site qui suit celle de login"), cette fonction permet d'activer l'utilisation des variables de sessions dans une page php.

Essaie de faire un:
Code: Tout sélectionner
<?
session_start();
if(! (isset($_SESSION['authentifie']) && $_SESSION['authentifie'] == 1) ) {
echo "pas authentifie";
}
else {
echo "authentifie";
}
?>

pour voir si la variable est initialisée ou pas...

Limerick
Nouveau WRInaute
 
Messages: 6
Inscription: Jeu Jan 20, 2005 17:43

Message le Mar Jan 25, 2005 21:33

Désolé pour le retard de ma réponse. Suis un peu à fond...

Quand je dis que ça ne marche pas, cela signifie que j'ai toujours une Erreur 403 quand la redirection se fait automatiquement.
Quand elle est manuelle, cela a toujours bien fonctionné : le .htaccess ne pose pas de problème.

Mais je ne suis pas du tout sur d'avoir fait correctement ce que tu me proposais plus haut, d'autant que je ne saisi pas ce que tu veux dire par "essaie de faire un [...] pour voirsi la variable est initialisée ou pas".

J'ai peut-être omis de dire que je ne connaissais rien à la programmation... :o

Limerick
Nouveau WRInaute
 
Messages: 6
Inscription: Jeu Jan 20, 2005 17:43

Message le Ven Jan 28, 2005 22:58

Bon me revoilou pour un essai avec les headers.

Si vous avez bien saisi mon souhait de ne pouvoir acceder à un forum que par le seul lien placé sur mon site, je souhaiterais connaître votre avis sur le point suivant.

Le site est fait avec DAlbum. Il est possible d'y inclure un code empêchant le HotLinking.
Comme le principe recherché est relativement proche (me semble-t-il), pensez-vous possible d'adapter ce code pour faire en sorte qu'aucune page du forum (se trouvant dans le répertoire www.example.com/forum/ ), ne puisse être affichée sans venir de monsite.com ?

Merci pour votre aide,


Edit HawkEye: example.com svp


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Bookmarks



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités