elnaza_14:
Primero creo que es necesaria alguna precisión,
Cita: La cuestión surge por el hecho de que me gustaría poder controlar de manera más fiable el hecho de que no sea posible entrar a cualquier archivo del sitio con solo escribir la URL directamente...
Que alcance tiene eso, y para que?,
supongamos que tu pagina tiene un home llamado
inicio.php
y una página secundaria, llamada
contenido.php
vos desearias que quien
tipee en su barra de direcciones http://tusitio.com/contenido.php
no pueda acceder a ella?
podés, con php, con la variable
$_SERVER['HTTP_REFERER'], analizando la cadena y comparandola con el nombre de tu dominio, esto es asi porque al tipear un dirección directamente, esta variable NO existe.
Podés complementar con una verificación de las cookies habiliitadas
código de inicio.php
Código PHP:
Ver original<?php
echo "<h1>inicio</h1>";
echo "<a href='contenido.php'>contenido</a>";
?>
código de contenido.php
Código PHP:
Ver original<?php
if(!isset($_COOKIE['verificar'])){ echo "<p>asegurese que las cookies estan habilitadas en su navegador.<br>
<a href='inicio.php'>ir al inicio</a></p>";
}
$dominio = "foros.emprear.com"; //
$dominio2 = "www.foros.emprear.com"; //
$referer = $_SERVER['HTTP_REFERER'];
if ($referer == "") {
$host = $dominio;
} else {
}
if($host['host'] == $dominio || $host['host'] == $dominio2) {
echo "muestro";
} else {
//redirijo
header("Location: inicio.php"); }
?>
Pero cuidado, esa script es tan estricta que no podrian acceder a contenido.php desde links externos a tu dominio, para hacerla más permisiva, solo deberias condicionar contra la existencia de $referer y no contra su contenido
Demo
http://foros.emprear.com/php/cookies/inicio.php http://foros.emprear.com/php/cookies/contenido.php
(tambien intentar acceder a esa segunta dirección ingresandola directamente en el navegador, o sencillamente pegando y accediendo)
Probar tambien deshabilitando cookies en el navegador
Acceder desde un sitio fuera del dominio
http://emprear.com.ar/foros.php
En cuanto al comportamiento de los diferentes navegadores, funciona correctamente en todos
Saludos