Как передать параметры в PHP-скрипт через веб-страницу? - PullRequest
137 голосов
/ 08 марта 2012

Я вызываю скрипт PHP всякий раз, когда загружается веб-страница.Однако есть параметр, который должен запускать скрипт PHP (который я обычно передаю через командную строку, когда тестирую скрипт).

Как я могу передавать этот аргумент при каждом запуске скрипта при загрузке страницы?

Ответы [ 2 ]

226 голосов
/ 08 марта 2012

Предположительно, вы передаете аргументы в командной строке следующим образом:

php /path/to/wwwpublic/path/to/script.php arg1 arg2

... и затем получить к ним доступ в скрипте таким образом:

<?php
// $argv[0] is '/path/to/wwwpublic/path/to/script.php'
$argument1 = $argv[1];
$argument2 = $argv[2];
?>

То, что вам нужно делать при передаче аргументов через HTTP (доступ к сценарию через Интернет), это использовать строку запроса и обращаться к ним через $ _GET superglobal:

Перейти к http://yourdomain.com/path/to/script.php?argument1=arg1&argument2=arg2

... и доступ:

<?php
$argument1 = $_GET['argument1'];
$argument2 = $_GET['argument2'];
?>

Если вы хотите, чтобы скрипт выполнялся независимо от того, откуда вы его вызываете (из командной строки или из браузера), вам понадобится что-то вроде следующего:

РЕДАКТИРОВАТЬ: , как указал Ктулху в комментариях, самый прямой способ проверить, в какой среде вы выполняете, это использовать константу PHP_SAPI . Я обновил код соответственно:

<?php
if (PHP_SAPI === 'cli') {
    $argument1 = $argv[1];
    $argument2 = $argv[2];
}
else {
    $argument1 = $_GET['argument1'];
    $argument2 = $_GET['argument2'];
}
?>
16 голосов
/ 24 декабря 2012
$argv[0]; // the script name
$argv[1]; // the first parameter
$argv[2]; // the second parameter

Если вы хотите, чтобы весь скрипт выполнялся независимо от того, откуда вы его вызываете (из командной строки или из браузера), вам понадобится что-то вроде следующего:

<?php
if ($_GET) {
    $argument1 = $_GET['argument1'];
    $argument2 = $_GET['argument2'];
} else {
    $argument1 = $argv[1];
    $argument2 = $argv[2];
}
?>

Для вызова из командной строки chmod 755 /var/www/webroot/index.php и использования

/usr/bin/php /var/www/webroot/index.php arg1 arg2

Чтобы позвонить из браузера, используйте

http://www.mydomain.com/index.php?argument1=arg1&argument2=arg2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...