Foros del Web » Programando para Internet » PHP »

Solo permitir acceso a cronjob

Estas en el tema de Solo permitir acceso a cronjob en el foro de PHP en Foros del Web. Pues como dice el titulo, tengo algunos cronjobs y quisiera que solo puedan ser ejecutados por el mismo servidor, es decir, que si accedo desde ...
  #1 (permalink)  
Antiguo 23/02/2007, 22:22
 
Fecha de Ingreso: noviembre-2006
Ubicación: Jerez de la Fra. (Cádiz)
Mensajes: 128
Antigüedad: 17 años, 4 meses
Puntos: 1
Solo permitir acceso a cronjob

Pues como dice el titulo, tengo algunos cronjobs y quisiera que solo puedan ser ejecutados por el mismo servidor, es decir, que si accedo desde el navegador no haga nada...

alguien sabe alguna manera de hacerlo???

muchas gracias y un saludo ;)
  #2 (permalink)  
Antiguo 23/02/2007, 22:32
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Solo permitir acceso a cronjob

Pues la forma más sencilla y la primera que se me viene a la cabeza es que en la regla del cron le pongas alguna variable GET difícil de adivinar, algo tipo

http://...../pagina.php?sertiyhqhwb=19863khats

Entonces, si no existe esa variable o no tiene ese valor, sencillamente no hacés nada.

Como el código PHP nunca se verá en el sitio, y tampoco será visible la actividad de cron más que en los registros de acceso del servidor, creo que es una solución válida.


Saludos.
  #3 (permalink)  
Antiguo 24/02/2007, 04:43
 
Fecha de Ingreso: febrero-2006
Mensajes: 134
Antigüedad: 18 años, 1 mes
Puntos: 10
Re: Solo permitir acceso a cronjob

Hay otra forma:
Es válida mientras que tu configuración de php.ini no tenga habilitado llenar las variables $argv y $argc en caso de ser el servidor web quien haga la petición.

Entonces, llamás al script desde cron con un parámetro, p. ej. "php miscript.php lagarto=cronjob"
Entonces, al comienzo del script escribes:
Código PHP:
<?php // Comienzo:
if( (empty($argv) || $argv[1] != 'lagarto=cronjob' ) {
exit;
}
// Por aqui sigue tu script
?>
O incluso puedes hacer un script que te cargue los que quieras en tu cron:
Código PHP:
<?php // Comienzo:
if( (empty($argv) || $argv[1] != 'lagarto=cronjob' ) {
exit;
}
if(!empty(
$argv[2]))
$script $argv[2];
else
$script 'script_por_defecto.php';

if(!
file_exists('/var/directorio_de_tus_scripts/' $script)) {
file_put_contents('/var/logs/php_cron/log.log'
date('[H:i:s | d-m-Y]') ." No se pudo abrir el archivo $script\n\n"
FILE_APPEND);
exit;
} else {
define('ENTRADA_CORRECTA'true);
include(
'/var/directorio_de_tus_scripts/' $script);
}
Y puedes poner a tus scripts
Código PHP:
if(!defined('ENTRADA_CORRECTA') || defined('ENTRADA_INCORRECTA'))
exit; 
al inicio del script

Luego llamas a tu script: "php miscript.php lagarto=cronjob scheduler.php"
y ya está!

Saludos
  #4 (permalink)  
Antiguo 24/02/2007, 23:55
 
Fecha de Ingreso: noviembre-2006
Ubicación: Jerez de la Fra. (Cádiz)
Mensajes: 128
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Solo permitir acceso a cronjob

muchas gracias por vuestras respuestas :) me habeis ayudado bastante ;)
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 10:10.