Названия таблиц и столбцов не могут быть заменены параметрами в PDO.
В этом случае вы просто захотите фильтровать и дезинфицировать данные вручную. Один из способов сделать это - передать сокращенные параметры функции, которая будет выполнять запрос динамически, а затем использовать оператор switch()
для создания белого списка допустимых значений, которые будут использоваться для имени таблицы или имени столбца. Таким образом, пользовательский ввод никогда не попадает непосредственно в запрос. Например:
function buildQuery( $get_var )
{
switch($get_var)
{
case 1:
$tbl = 'users';
break;
}
$sql = "SELECT * FROM $tbl";
}
Не оставляя случая по умолчанию или используя случай по умолчанию, который возвращает сообщение об ошибке, вы убедитесь, что используются только значения, которые вы хотите использовать.
Имейте Вас, попробовал
ssh -t remotemachine <some command>
опция т из ssh страницы справочника:
-t Force pseudo-tty allocation. This can be used to execute
arbitrary screen-based programs on a remote machine, which
can be very useful, e.g. when implementing menu services.
Multiple -t options force tty allocation, even if ssh has no local tty.
вместо
-f Requests ssh to go to background just before command execution.
This is useful if ssh is going to ask for passwords or passphrases,
but the user wants it in the background.
This implies -n. The recommended way to start X11 programs at a remote
site is with something like ssh -f host xterm.
Некоторые идеи:
tail -f
. Существует File::Tail . Не знайте, помогает ли это?
rsync://[USER@] ХОСТ [: ПОРТ]/SRC... [DEST] | хвост [DEST]?
Кто-то предложил использовать nc (netcat). Это решение действительно работает, но менее идеально, чем просто использование ssh-t. Самая большая проблема состоит в том, что Вы должны использовать nc с обеих сторон соединения и должны сделать некоторое исследование порта на локальной машине для нахождения надлежащего порта, по которому можно соединиться. Вот адаптация вышеупомянутого кода для использования netcat:
$pid = fork();
if(!$pid)
{
exec("ssh $host -f 'tail -f $filename |nc $localhost $port'");
exit;
}
exec("nc -l -p $port");