Почему кнопка считается нажатой при обновлении страницы и доступе к странице? - PullRequest
1 голос
/ 01 октября 2019

У меня есть простая форма отправки в index.php:

<?php
    include('inputs.php');
?>
        <form method="post" action= "/index.php">
            <input class="button" id="restart_device" name="restart_device" type="submit" value="Restart Display" />
        </form>

и действие в inputs.php файле:

if(isset($_POST['restart_device'])) {
    shell_exec("sudo /var/www/html/restart_device.sh");
}

Проблема заключается в том, что этот код выполняется накаждое обновление страницы или каждый раз, когда я получаю доступ к странице. Я не хочу такого поведения. Я хочу выполнить shell_exec("sudo /var/www/html/restart_device.sh"); только при нажатии кнопки, но не при доступе к странице или обновлении страницы.

Я также пытался использовать <form method="post" action= "">, но безуспешно.

1 Ответ

2 голосов
/ 01 октября 2019

При обновлении страницы, загруженной с помощью запроса POST, большинство браузеров спросят, хотите ли вы повторить запрос, вызывая повторное инициирование действия. Чтобы это приглашение не появлялось, добавьте

header("Location: /");
die();

После shell_exec. Это перенаправит браузер на ту же страницу после завершения действия, заставив его переключиться на GET без каких-либо параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...