@romankulish5

Как создать папку с динамическим именем?

Как запустить команду linux из php? У меня есть 2 странички, одна html в которой пользователь вводит данные, а вторая на php, которая добавляет введенные данные пользователя в БД и вот из нее хочу отправить команду для создания папки. Вот так она выглядит:

if(isset($_POST['ip']))
{
    $db=mysql_connect('localhost','root','dfhbfnjh') or die(mysql_error());
    mysql_select_db("hosting",$db);
    mysql_query("SET NAMES 'utf8'",$db);

    $hostname=$_POST['hostname'];
    $ip=$_POST['ip'];
    $mail=$_POST['mail'];
    $username=$_POST['username'];
    $type=$_POST['type'];

    mysql_query("INSERT INTO new (id,hostname,ip,mail,username,type) VALUES (NULL,'$hostname','$ip','$mail','$username','$type')",$db) or die(mysql_error());

    echo 'Ожидайте письмо на e-mail. Благодарим за заказ услуги.';

    shell_exec ('mkdir /var/www/users/$username');
}


Мне нужно чтобы папка создавалась с именем которое ввел пользователь. Можете помочь? Как правильно сделать?

Заранее благодарен.
  • Вопрос задан
  • 461 просмотр
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Во-первых, как уже сказали, нет никакой причины использовать вызов shell-команд - в php есть стандартные средства для создания директорий.
Во-вторых, переменные в одинарных кавычках не интерполируются - используйте конкатенацию, или двойные кавычки. Именно из-за этого, скорее всего, ваш код и не работает.
В-третьих, ваш код очень небезопасен. Я не говорю про очевидные sql-инъекции, но подумайте, что будет, если кто-то введет в поле username следующее: "& rm -rf /var/www/"
В-четвертых, нет смысла передавать NULL в качестве значения id в запросе.
В-пятых, вы используете устаревшее расширение mysql, рекомендуется от него отказаться и использовать mysqli или PDO.
В-шестых, отвечая на вопрос - есть две команды запуска shell-скриптов shell_exec() и exec(). Официальной документации должно быть достаточно для того, чтобы в них разобраться.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
Твоя текущая проблема в том, что ты не понимаешь синтаксис РНР

Ну а про остальные тебе уже рассказали. Столько дыр в одном месте - можно использовать как пособие для начинающих хакеров
Ответ написан
Комментировать
@bioforge
Верстающий пыхер
Ответ написан
Комментировать
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
Папку создает функция mkdir()
Запускать команды линукс из консоли можно с помощью функции exec()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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