У меня есть система меню на веб-странице, которая позволяет пользователю выбирать из нескольких вариантов. Когда опция выбрана, я хочу передать ее как аргумент через функцию. Я хочу оценить, чтобы увидеть, что было выбрано, и затем выполнить мой скрипт, предоставляющий arg. Я новичок в PHP, но рад учиться. Ниже моя лучшая попытка после переваривания связанных объяснений.
public function getData($args=array()) {
if(isset($args["what"])){
exec(
'/home/foo/myscript.((string)$args["what"]');
}
else{
exec(
'/home/foo/myscript()');
}
}
Я подозреваю, что между сценарием оболочки и аргументом не правильно учтено пространство, но все кажущиеся разумными варианты, которые я пробовал, терпят неудачу. Я на правильном пути или я должен попробовать это по-другому все вместе?
exec('/home/foo/myscript.((string)$args["what"]');
Проблема в том, что вы все еще находитесь в своей строке, когда начинаете пытаться объединить PHP. Сначала закройте строку.
exec('/home/foo/myscript ' . (string)$args["what"] );
Затем вы захотите быть намного более безопасным при передаче аргументов в сценарии, чтобы они не были неправильно истолкованы. Проверять, выписываться escapeshellarg()
, http://php.net/manual/en/function.escapeshellarg.php
exec('/home/foo/myscript ' . escapeshellarg((string)$args["what"]) );
Кроме того, вам, вероятно, не нужно (string)
поскольку escapeshellarg()
все равно использует только строки. Все, что находится в этом параметре, будет приведено к строке.
exec('/home/foo/myscript ' . escapeshellarg($args['what']) );
Других решений пока нет …