Выполнение PHP через командную строку - PullRequest
0 голосов
/ 20 декабря 2010

Я хочу иметь возможность выполнять PHP через командную строку с переменной $ _GET .Я понимаю, что могу сделать это с exec, но я бы хотел больше узнать о риске безопасности и о том, на что мне следует обращать внимание.Параметр, который я хочу передать, - это MySQL auto_incremented ID , возвращаемый из MySQL, поэтому я не связан с пользовательским вводом.Но просто допустив, чтобы это произошло, что нужно учитывать в отношении безопасности?

Сценарий примет идентификатор заказа и отправит клиенту счет по электронной почте.Это позволяет мне выполнять эту функцию из нескольких разделов сайта, поддерживая код только в одном месте.

Ответы [ 3 ]

2 голосов
/ 20 декабря 2010

Я не думаю, что вам действительно нужно выполнить это из командной строки. Создайте функцию PHP и включите ее в несколько разделов: это будет быстрее. За пример:

function sendInvoice($orderId) {
    // do something
}

Тогда назовите это:

include_once('send_invoice.inc.php');
sendInvoice(42);

Это все еще позволяет повторное использование кода и единственное место, где можно поддерживать код.

1 голос
/ 20 декабря 2010

Для сценариев cmdline $argv - это ответ. Но вы также можете ввести $_GET переменные. Просто предварительно определите переменную окружения QUERY_STRING соответственно:

putenv("QUERY_STRING=id=$id");
exec("php script.php");

Что касается безопасности, сценарии cmdline php могут быть более проблемными на серверах общего хостинга, если они инициируют административные действия. Но с этим мало что можно сделать. Строго храните сценарии cmdline в document_root и, если возможно, применяйте разрешение файла или каталога.

1 голос
/ 20 декабря 2010

Почему вы не можете использовать argv / argc?

$id = isset($argv[1]) ? (int)$argv[1] : (int)$_REQUEST['id'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...