Page 1 sur 1

Redirection vers page d'accueil ...

Posté : 13 mars 2008, 20:40
par Mik
Salut la compagnie.

Je voudrais savoir ce qui me permettrait de faire ca:

Je voudrais que pour acceder à une page de mon site, on soit obliger de passer par la page d'accueil.
Exemple:
Sur la page d'accueil, j'ai un lien vers un article.
Si quand on est sur la page d'accueil, on clique sur le lien, ca mene bien à l'article.
Par contre, si un utilisateur tape directement le lien dans la barre d'adresse, alors, je voudrais qu'il accede à la page d'accueil.
Je ne sais pas si je suis clair ...

En tout cas, il y a bien un moyen de faire ca, j'ai vu des sites qui le faisait.

Il faut utiliser des cookies ?

Merci de votre future aide :)

++

Posté : 13 mars 2008, 22:52
par Aureusms
Moi je le fais aussi en utilisant les sessions PHP (ce n'est donc pas la bonne rubrique).

Tu dois ainsi dans ta page d'accueil démarrer une session via par exemple
$_SESSION["passage_accueil"] = 'ok';


et dans toute tes autres pages, tu rediriges si la valeur de session n'existe pas :
<?php
session_start();
if ($_SESSION["passage_accueil"] != 'ok') header(location=...);

Voilà le principe que j'utilise.

Posté : 14 mars 2008, 02:07
par Hywan
'soir :).

Une légère correction :
header('Location: ...');
// et non
header(location=...);

Posté : 12 avr. 2008, 21:01
par fatalfury
A mon avis, il faut mieux éviter cela, pour une question de référencement. Tu risques de n'avoir que la page d'accueil dans les moteurs de recherche.

Posté : 12 avr. 2008, 23:15
par hakazizi
et admettons qu'un utilisateur veux faire voir un article a un de ses copains et qu'il est rediriger vers la page d'accueil...

Posté : 13 avr. 2008, 01:55
par Victor BRITO
A mon avis, il faut mieux éviter cela, pour une question de référencement. Tu risques de n'avoir que la page d'accueil dans les moteurs de recherche.
En fait, un simple
header ('Location: ...');
est une redirection 302, ce qui veut dire que A est redirigée vers B, mais que A doit rester référencée, B ne devant pas l'être, puisque la redirection est temporaire.

Pour que A doit désindexée au profit de B, il faut ajouter au code PHP ci-dessus celui-ci :
header ('Status: 301 Moved permanently', false, 301);
Ce qu'il ne faut surtout pas faire :
  1. une redirection en JavaScript (les robots des moteurs de recherche l'ignoreront, ainsi que les navigateurs où JavaScript est désactivé ou non pris en charge),
  2. une redirection de type <meta name="refresh" content="0;url-de-destination" /> (elle pose un problème d'accessibilité, en ce sens qu'elle "casse" le bouton précédent et qu'elle peut désorienter l'utilisateur si la redirection s'effectue après un laps de temps au cours duquel A est affichée avant la redirection).