Лучший способ санировать исполнительную команду с пользователем вставил переменные

Я бы подошел к этому по-другому - форма, содержащая элемент управления, удаляет фокус с элемента управления, когда пользователь нажимает на другую часть формы.

Наличие элемента управления на самом деле потеря фокуса намного чище, чем попытка заставить элемент управления «симулировать» потерю фокуса в определенных ситуациях, хотя на самом деле это не так. Имейте в виду, что если элемент управления не потерял фокус, он все равно будет принимать такие вещи, как ввод с клавиатуры.

15
задан The Digital Ninja 7 December 2014 в 01:20
поделиться

1 ответ

Используйте функцию, которая В PHP для этого есть:

$cmd = 
     "/usr/bin/do-something " . 
     escapeshellarg($arg1) . 
     ' ' . 
     escapeshellarg($arg2);

Вы также можете использовать escapeshellcmd ()

В чем разница?

escapeshellarg () ТОЛЬКО добавляет 'вокруг строки, а затем \ перед любыми другими' символами. http://www.php.net/escapeshellarg

escapeshellcmd () экранирует все зависимые от оболочки символы ($, \ и т. Д.), Но не добавляет кавычек. http://www.php.net/manual/en/function.escapeshellcmd.php

Проблема заключается в том случае, если вы используете escapeshellarg () как ЧАСТЬ ЦИТАТА параметра. Затем он становится бесполезным (фактически добавляя кавычки к смеси).

Вообще говоря, мы предпочитаем использовать escapeshellcmd () с добавлением наших собственных кавычек.

$cmd = 
    "/usr/bin/do-something '" . 
    escapeshellcmd($arg1) . 
    "' '" . 
    escapeshellcmd($arg2) . 
    "'";

Будьте осторожны!

21
ответ дан 1 December 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: