Foros del Web » Programando para Internet » PHP »

duda con $_SERVER['HTTP_REFERER']

Estas en el tema de duda con $_SERVER['HTTP_REFERER'] en el foro de PHP en Foros del Web. Hola sabios!! Vereis , queria evitar que un usuario puedira llamar a mis modulos php de forma directa y pensé en poner al comienzo de ...
  #1 (permalink)  
Antiguo 06/10/2003, 17:02
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 86
Antigüedad: 20 años, 8 meses
Puntos: 0
duda con $_SERVER['HTTP_REFERER']

Hola sabios!!

Vereis , queria evitar que un usuario puedira llamar a mis modulos php de forma directa y pensé en poner al comienzo de todos mis modulos lo siguiente:

if ($_SERVER['HTTP_REFERER'] == "") {
header("Location: index.php");
exit;
}

.

Solo lo he probado en mi modulo de conexion a la base de datos tal y como sigue:

if ($_SERVER['HTTP_REFERER'] == "") {
header("Location: index.php");
exit;
}

$Servidor="localhost";
$BaseDatos="Al_Limite";
$Usuario="nobody";
$Password="";

//TERCERA PARTE
function conectar()
{
$conexion=mysql_connect($GLOBALS["Servidor"],$GLOBALS["Usuario"],$GLOBALS["Password"]);
mysql_select_db($GLOBALS["BaseDatos"]);
return ($conexion);
}

Sin embargo, esto no funciona.El servidor se queda eternamente cargando la pagina inicial

Supongo que esta forma de actuar no funciona cuando se llama a un modulo desde otro.¿Es asi? ¿si se llama a un modulo desde otro $_SERVER['HTTP_REFERER'] == "" ?

Si es así, ¿como puedo hacer para que los usuarios no puedan acceder a los modulos directamente?.

Muchas gracias por adelantado.

saludos!!
__________________
"Quiero saber de todo.....y no se nada"
  #2 (permalink)  
Antiguo 06/10/2003, 17:27
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Si en index.php estas incluyendo a el modulo de base de datos, es logico, porque vuelve a ejecutar ese codigo y el header("Location") no crea un HTTP_REFERER.

Lo que yo he visto por scripts por ahi (en los phpBB) es que miran el valor de PHP_SELF y lo comparan con el nombre del fichero php donde esta el codigo. Si es llamado con un include, el valor del PHP_SELF es el del fichero que lo incluye.

Otra solucion es definir una constante antes de incluirlo y en el codigo a incluir mirar si esta definida esa constante.

Saludos.

PD: Ahora me asalta la duda, ¿era PHP_SELF o REQUEST_URI (o algo asi)? Dejame que revise el codigo del phpBB.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 06/10/2003, 19:32
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 20 años, 11 meses
Puntos: 1
no se quizas no entiendo bien el problema pero prueba asi

if (!$_SERVER['HTTP_REFERER']) {
header("Location: ../index.php");
exit;
}

si no hay una pagina de llamada un referer va al index

a ver si funciona , nos cuentas

un saludo
  #4 (permalink)  
Antiguo 08/10/2003, 18:22
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 86
Antigüedad: 20 años, 8 meses
Puntos: 0
Muchas gracias a ambos.

La solucion de Jordi1 no funciona por lo que comentaba josemi, la página se vuelve a llamar a sí misma una y otra vez.

En cuanto a la solucion que aportas , josemi, es muy interesante sin embargo se presentan dos problemas:

1) Tengo módulos que incluyo en muchas páginas diferentes, incluso los llamo dentro de otros módulos, con lo cual la idea de comparar PHP_SELF con el nombre del fichero php donde está el código es bastante compleja.

2) Además , si tal y como dices sólo funciona cuando se hace un "include" continuo teniéndo problemas puesto que yo casi siempre uso require_once y algo menos (cuando se que no va a haber colisiones) require.

Si este método funcionara tb con require podriamos pensar en compara PHP_SELF al principio de cada módulo con todos los nombres de ficheros php en los que se ha incluido. Se podria considerar

La solución de la constante es una muy buena salida. Lo pensaré.

Seguire curioseando por ahi. Mucha gracias Jordi1 y ¡¡muchas gracias super-nuevo-moderador!!.

Si alguien usa alguna otra solución efectiva que se anime y la comparta!!

Un saludo
__________________
"Quiero saber de todo.....y no se nada"

Última edición por kaslimon; 08/10/2003 a las 18:24
  #5 (permalink)  
Antiguo 23/11/2003, 06:11
 
Fecha de Ingreso: enero-2002
Mensajes: 15
Antigüedad: 22 años, 2 meses
Puntos: 0
Yo utilizo esta solucion, a mi me sirve, espero que a vos tambien

<?
if (eregi("ARCHIVO.EXTENSION",$_SERVER['PHP_SELF'])) {
Header("Location: http://PAGINA A DONDE SE REDIRIGE SI ACCEDEN AL ARCHIVO");
}
?>

Pone esto delante de cada archivo PHP que no quieras que accedan, y que solo quieras que se pueda incluir en otro archivo.

Un saludo
  #6 (permalink)  
Antiguo 17/04/2016, 09:50
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: duda con $_SERVER['HTTP_REFERER']

Yo necesito modificar la cabecera http de $_SERVER['HTTP_REFERER']
Ejemplo Supongamos Que estamos en un post de Facebook publicado por mi Blog al Hacer Click sobre el post dentro de facebook en la pagina del post en el blog si hacemos echo $_SERVER['HTTP_REFERER'] nos diría que la visita vino de http://facebook.com/ yo lo que necesito es modificar de donde vino la visita por ejemplo cambiar facebook.com a google.com e visto en videos que muchos cambian la cabecera con header location pero no e podido hacerlo funcionar alguien tendrá algún código de ejemplo para usar de guía Muchas gracias a todos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:09.