Html форма для передачи переменной в php для bash?

хорошо, это, вероятно, больше шагов, чем необходимо. У меня есть HTML-страница, которая запрашивает 2 даты (начало и конец). Я хочу, чтобы она принимала эти даты и отправляла их в файл PHP, который затем запускал скрипт, используя эти даты в качестве переменных.

Главная страница:

<html>
<head>
<meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />
<title>Calendar lookup </title>
</head>
<link href = "stylesheets/common.css" type = "text/css" rel = "stylesheet">

<body>

<h1>Calendar Date Range</h1>

<form method = "post" action = "run_script.php">


Start Date YYYY-MM-DD: <br />
<input type = "text" name = "Start_Date" size = "35" />
<br />

End Date YYYY-MM-DD: <br />
<input type = "text" name = "End_Date" size = "35" />
<br /> <br />

<input type = "submit" value = "Submit" />
<br />
</form>

</body>

эта страница должна передавать даты моему php-файлу-run_script.php:

<?php


$Start_Date = $_POST['Start_Date'];
$End_Date = $_POST['End_Date'];

 exec (sudo sh  "gather.sh $Start_Date $End_Date ");
?>

тем не менее, кажется, что это вовсе не запуск сценария сбора. когда я нажимаю кнопку отправки, я перехожу на пустую страницу /run_script.php и никогда не запускаю collect.sh (я проверяю, куда он должен сбрасывать данные, ничего не появляется)

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

Есть предположения? или это просто совершенно неправильный способ сделать это?

Редактировать

Как указал Эд, в PHP есть гигантская уязвимость. так что это неправильный путь.

предложения по другому пути приветствуются.

Должно быть sudo sh gather.sh "$Start_Date $End_Date"

EternalHour 21.03.2019 19:13

Пожалуйста, не размещайте этот код нигде; он имеет гигантскую уязвимость для инъекций. Любой, кто имеет доступ к файлу PHP в браузере, может использовать его для запуска произвольного кода на вашем компьютере.

elixenide 21.03.2019 19:15

Не говоря уже о синтаксической ошибке php. PHP понятия не имеет, что такое sudo sh. Вы должны передать это в строку "sudo sh gather.sh $Start_Date $End_Date "

Derek Pollard 21.03.2019 19:23

Ах хорошо! @EdCottrell все внутри, без внешнего доступа.

stcoyle 21.03.2019 19:56

@stcoyle Тем не менее, принцип таков: никогда не пишите код, который, как вы знаете (или должны знать), небезопасен. Код, который предназначен только для внутреннего использования, — это тот же самый код, который, вероятно, будет повторно использован в общедоступном контексте через шесть месяцев или год и полностью взломает ваш сервер. И это при условии, что вы случайно не опубликуете это раньше. Предположим, что он доступен для вашего злейшего врага.

elixenide 21.03.2019 20:02

@stcoyle, почему бы не использовать PHP и что-то вроде mysql или обычного текста для хранения дат, а затем анализировать их из обычного текстового файла с помощью PHP

Derek Pollard 21.03.2019 20:28

@DerekPollard да, я думаю, что это, вероятно, будет конечным результатом, который, вероятно, будет совсем другой проблемой, ха-ха

stcoyle 21.03.2019 20:34

По крайней мере, вы должны проверить, что полученные значения действительно являются датами и находятся в ожидаемом диапазоне.

solarc 21.03.2019 20:50

Помимо зияющей уязвимости безопасности и неправильного использования exec, вы можете убедиться, что пользователь, под которым работает PHP, действительно имеет правильные разрешения. Скорее всего, это www-data, и это очень ограничено в отношении выполнения произвольных команд. Если вы В самом деле знаете, что делаете, вы можете добавить www-data к sudoers — если вы действительно не знаете, каковы последствия этого: не делай этого.

Tox 19.09.2019 10:20
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
374
0

Другие вопросы по теме