2009-06-25 4 views
2

J'ai quelques pages que je ne veux pas que les utilisateurs puissent accéder directement.PHP: empêcher l'accès direct à la page

J'ai cette fonction, je suis venu avec ce qui fonctionne:

function prevent_direct_access() 
{ 
    if($_SERVER['REQUEST_URI'] == $_SERVER['PHP_SELF']) 
    { 
     //include_once('404.php'); 
     header("Location: 404.php"); 
    } 
} 

Ce fait exactement ce que je veux, l'URL ne change pas, mais le contenu ne. Cependant, je me demande s'il y a quelque chose que je dois ajouter pour dire aux moteurs de recherche que c'est un 404 et ne pas l'indexer. Gardez à l'esprit que je ne veux pas que l'URL change.

Merci! Pour les moteurs de recherche, si vous renvoyez le statut HTTP 404, ils ne devraient pas indexer, je crois,

+0

Y a-t-il une raison pour laquelle vous utilisez cette approche plutôt que d'utiliser robots.txt? – illvm

Répondre

5

Ne pas envoyer mais redirigent le code d'état 404:

header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404); 
exit; 
+0

Je devrais ajouter ceci avec l'en-tête() J'ai mon code i ou ajouter ceci et enlever l'en-tête() déjà dans mon code ... juste voulu clarifier..Merci! –

+1

Remplacez votre appel 'header' avec mon code. – Gumbo

0

Mais vous pouvez toujours rediriger vers un endroit couvert par un robots.txt

0

Pour assurer les moteurs de recherche ne pas indexer, utilisez une commande header() à envoyer un 404 lke ceci;

header("HTTP/1.0 404 Not Found"); 

Ou mettre tous ces fichiers dans un dossier, "comprend" par exemple, et ajouter un "Deny/includes /" dans votre fichier robots.txt. De cette façon, vous pouvez également ajouter un fichier ".htaccess" dans le même répertoire avec une ligne - "Deny From All" - cela indiquera à Apache de bloquer l'accès (si apache est configuré correctement), pour une autre couche de sécurité.

0

Juste pour préciser:

  • Vous avez un peu de PHP que vous voulez à la disposition des autres programmes PHP sur le système
  • Vous ne voulez pas que quiconque d'y accéder, sauf en exécutant l'un des autres programmes PHP

(ie « directe » ne signifie pas «sauf en suivant un lien d'une autre page sur ce site »)

Il suffit de garder le fichier PHP en dehors de la webroot. De cette façon, il n'aura pas d'URL en premier lieu.

+0

Malheureusement, il y a un paramètre que je ne peux pas modifier et qui ne permet pas à mes scripts d'accéder à quoi que ce soit en dehors de la racine du document. –

+0

On dirait que vous cherchez une solution de contournement pour avoir un hébergement de qualité inférieure. J'aurais mieux hébergement si j'étais vous :) – Quentin

Questions connexes