формы — UNIX-команда whois через PHP и system ()

Я хочу получить простую форму, используя php и unix системную команду ‘whois’. Где ошибка? : — /

        <form action="whois.php" method="get" >
<p>
Domainadresse (ohne <i>http://</i> oder <i>www</i>) <input type="text" name="domainname" value="teleschirm.info" />
<input type="submit" value="Okay, Abfrage starten!" />
</p>
</form>
<?php
echo '<pre>';
$last_line = system('whois
echo $_POST[domainname]
' , $retval);
echo '</pre>'
?>

0

Решение

Вы используете одинарные кавычки. То, что находится между одинарными кавычками, не оценивается, поэтому ваша переменная не копируется в строку, которую вы передаете system, Измените строку на

system("whois {$_POST['domainname']}" , $retval);
0

Другие решения

форма использует метод get, но код php использует переменную post. выбрать один для обоих.

неправильное использование переменной в системе:

$last_line = system('whois '.$_POST['domainname'] , $retval);

Вы делаете с возвращенным значением:

echo $retval;

как отмечалось другими: ввод пользователя должен быть очищен либо escapeshellarg() или же escapeshellcmd()

0

Стоит отметить, что здесь есть большая дыра в безопасности, и этого, как правило, следует избегать. Пользовательский ввод не должен передаваться system() без тщательной очистки. Что произойдет, если это чей-то домен?

sorry.com; rm -rf /

Это удалит все на сервере. Вы хотите очистить данные, возможно, с escapeshellarg() и / или escapeshellcmd(),

Я бы удалил что-нибудь за пределами [a-z0-9] и, возможно, пара безвредных специальных символов, таких как _, -, . Одиночная кавычка аргумент.

🙂

0
По вопросам рекламы [email protected]