Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > запрет cron скрипта на выполнение через браузер


Автор: zebulun 6.2.2013, 14:17
Я извиняюсь, за, возможно глупый вопрос, написал людям скрипт, отсылающий письма, поместил в корень сайта, владельцы сайта должны были прикрутить скрипт к крону. Через время пишут, что письма не приходят, т.е. прикрутили они к крону или нет я не знаю, это не важно, в принципе. 
Так вот, если я пропишу путь к скрипту в браузере, то он выполняет, то что должен, вот тут главный вопрос, а, точнее, два:

1.Если скрипт без ошибок выполняется через браузер, значит ли это, что, если его поставить на крон, то он также верно будет выполняться?

2.Как запретить все-таки запуск из браузера?А то ... ну, понятно.

Доступ к панели сайта мне не дают, попробую еще раз попросить, но для начала, должен решить проблему запуска из браузера, это ведь проблема?
Заранее, спасибо!

Автор: ksnk 6.2.2013, 15:00
Цитата(zebulun @  6.2.2013,  14:17 Найти цитируемый пост)
2.Как запретить все-таки запуск из браузера?А то ... ну, понятно.

При запуске из браузера появляются специфические переменные в окружении. Достаточно распечатать phpinfo() в обоих режимах и выбрать для себя нужные.

Автор: Aliance 6.2.2013, 15:03
Крон скрипты все же лучше поменять вне public_html, чтобы доступа через wget к ним не было.
Если же они намеренно помещены вовне public_html, то можно ввести проверку на то, что он запущен из браузера примерно так:
Код

return $_SERVER['REMOTE_ADDR'] != '127.0.0.1' && $_SERVER['SERVER_ADDR'] != $_SERVER['REMOTE_ADDR'];


Отвечая на первый вопрос, если все же выполнено условие, что нет доступа по http к крону, то значит он будет запускаться через cli, со всеми вытекающими.
Все зависит от скрипта. Например, возможно скрипт завязан на $_GET.

Автор: Wowa 11.2.2013, 13:46
Можно проверять так

Код

if (php_sapi_name() != 'cli') {
die('browser');
}

Автор: MoLeX 11.2.2013, 14:46
Код

var_dump( $_SERVER['argc'] );


http://example/index.php
#php www/example/index.php par1 par2 par3

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)