Я хочу получить простую форму, используя 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>'
?>
Вы используете одинарные кавычки. То, что находится между одинарными кавычками, не оценивается, поэтому ваша переменная не копируется в строку, которую вы передаете system
, Измените строку на
system("whois {$_POST['domainname']}" , $retval);
форма использует метод get, но код php использует переменную post. выбрать один для обоих.
неправильное использование переменной в системе:
$last_line = system('whois '.$_POST['domainname'] , $retval);
Вы делаете с возвращенным значением:
echo $retval;
как отмечалось другими: ввод пользователя должен быть очищен либо escapeshellarg()
или же escapeshellcmd()
Стоит отметить, что здесь есть большая дыра в безопасности, и этого, как правило, следует избегать. Пользовательский ввод не должен передаваться system()
без тщательной очистки. Что произойдет, если это чей-то домен?
sorry.com; rm -rf /
Это удалит все на сервере. Вы хотите очистить данные, возможно, с escapeshellarg()
и / или escapeshellcmd()
,
Я бы удалил что-нибудь за пределами [a-z0-9]
и, возможно, пара безвредных специальных символов, таких как _
, -
, .
Одиночная кавычка аргумент.
🙂