Foros del Web » Programando para Internet » PHP »

Restringir Acceso a un script

Estas en el tema de Restringir Acceso a un script en el foro de PHP en Foros del Web. Hola, Tengo un script para enviar formularios escrito en PHP. Éste esta instalado en mi dominio principal, pero lo utilizo en 3 dominios adicionales (sin ...
  #1 (permalink)  
Antiguo 12/01/2004, 11:47
 
Fecha de Ingreso: septiembre-2003
Mensajes: 5
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta Restringir Acceso a un script

Hola,

Tengo un script para enviar formularios escrito en PHP. Éste esta instalado en mi dominio principal, pero lo utilizo en 3 dominios adicionales (sin la necesidad de instalar el script en cada dominio por separado).

Ahora lo que quiero saber es si se puede hacer algo para restringir el acceso a este script para que no se ejecute desde cualquier dominio (sólo quiero que se ejecute desde mis 3 dominios). Esto es para que no abusen del ancho de banda, ya que el script acepta archivos adjuntos.

Bien en resumen quiero que el acceso a este script solamente sea desde mis dominios, y no otros dominios.

No se si esto se puede hacer con un archivo .htaccess ya que utilizo Apache en Linux.

Bueno espero sus respuestas y gracias de antemano.
Saludos,
Eduardo

Última edición por caehost; 12/01/2004 a las 12:56
  #2 (permalink)  
Antiguo 12/01/2004, 13:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Desde PHP podrías hacerlo simplemente leyendo la variable de servidor:

HTTP_REFERER

No es infalible (esas cabeceras las puede suplantar cualquier software que las simule) pero funciona normalmente.

Por ejemplo .. podrías tener un array con tus dominos y hacer algo tipo:

Código PHP:
<?
// El dominio ha de ser sin [url]www.[/url]  
$dominios[]="nose.com";
$dominios[]="nose2.com";
$dominios[]="nose3.com";

$referido=$_SERVER["HTTP_REFERER"];
$partes_referido=parse_url($referido);

if (!
in_array($partes_referido['host'],$dominios)){
die (
"Acceso incorrecto... No te aproveches de mi ancho de banda xDD");
}

// resto de tu script actual .. (puedes usar ese código como un include() .. eso sí .. ese código ha de estar en cada uno de esos servidores).

?>
Te recomiendo que leas en www.php.net que hace cada función para comprender su funcionamiento ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 12/01/2004 a las 14:58
  #3 (permalink)  
Antiguo 12/01/2004, 13:34
 
Fecha de Ingreso: septiembre-2003
Mensajes: 5
Antigüedad: 14 años, 2 meses
Puntos: 0
Cluster Muchas Gracias por responderme.

Te cuento que ya coloqué el código en la cabecera de mi script y por supuesto reemplacé nose.com, nose2.com, nose3.com por mis dominios.
He tratado de ejecutar el script, pero me aparece el siguiente mensaje:

Warning: in_array(): Wrong datatype for second argument in /home/eduardo/public_html/emailtk/email.php on line 10
Acceso incorrecto... No te aproveches de mi ancho de banda xDD

¿Habré hecho algo mal?
¿Que fue lo que pasó?

Saludos,
Eduardo
  #4 (permalink)  
Antiguo 12/01/2004, 14:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues pasó que me equivoqué en el orden de los parámetros de in_array .. es justo al reves:


Código PHP:
if (!in_array($partes_referido['host'],$dominos)){
){ 
También me equivoqué en los nombres del array $dominios .. había puesto $dominos (ya lo corregí en el mismo mensaje).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 12/01/2004 a las 15:00
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 12:30.