Переменная из опубликованной формы останавливается или продолжается с php-кодом после всплывающего окна (JavaScript) - PullRequest
0 голосов
/ 24 июня 2019

У меня проблема с включенным php и javascript. Седнинг-форма из данных index.php в edit.php

это мой edit.php файл:

<script>
function ConfirmNull() {
if (confirm("Are You Sure?")) {
}
else {
window.history.back();
}
}
</script>

<?php 
    session_start();

    // connect to database  
    include("connection.php");


    // update records
    if (isset($_POST['update'])) {
        $chk=$_POST['chk'];
        $manyids=implode(",",$chk);
        //$id = $_POST['id'];
        $name = $_POST['name'];
        $time = $_POST['time'];
        $user = $_POST['user'];

    // if time is NULL ask if you are sure
        if ($time == "") {
            echo "<script type='text/JavaScript'>  
            ConfirmNull(); 
            </script>";
            mysqli_query($db, "UPDATE db SET name='$name', time='$time', user='$user' WHERE id in($manyids)");
            header('location: index.php');
    }           
        else {
            mysqli_query($db, "UPDATE db SET name='$name', time='$time', user='$user' WHERE id in($manyids)");
            header('location: index.php');
        }
}
?>

Прямо сейчас, если значение переменной времени равно NULL, он должен запустить javascript с вопросом: вы уверены? Если ДА, продолжайте с SQL и обновите базу данных. Если Отмена, остановите php-код и запустите windows.history.back и НЕ запускайте SQL.

К сожалению, это обновление БД, когда я нажимаю Отмена.

1 Ответ

1 голос
/ 25 июня 2019

Работа PHP заключается в создании HTML-кода, который отправляется в браузер.Что касается PHP, весь ваш JavaScript - это просто текст.Это не имеет никакого смысла, пока не попадет в браузер.Таким образом, all ваш PHP будет работать до любого вашего JavaScript.

Поэтому правильное место для проверки - обработчик отправки формы в index.phpдо того, как браузер даже загрузит edit.php:

document.querySelector('#myForm').addEventListener('submit', evt => {
  if (evt.target.querySelector('[name="time"]').value === '') {
    if (!confirm('Are you sure?')) evt.preventDefault();
  }
});

И вам действительно нужно исправить код уязвимой базы данных .Как правило, $ никогда не должно появляться в строке запроса SQL.

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