繁体   English   中英

弹出框后,已发布表单中的变量停止或继续显示PHP代码(javascript)

[英]Variable from posted form stops or continues with php code after pop up box (javascript)

我有一个包含php和javascript的问题。 Sedning表格从数据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');
        }
}
?>

现在,如果value时间变量为NULL,则应使用以下问题运行javascript:您确定吗? 如果是,请继续执行SQL并更新数据库。 如果取消,则停止php代码并运行windows.history.back,不要运行SQL。

不幸的是,当我点击“取消”时,它正在更新数据库。

PHP的工作是生成发送到浏览器的HTML。 就PHP而言,您所有的JavaScript都只是文本。 直到到达浏览器,它才具有任何意义。 这样,您所有的PHP都将在任何 JavaScript之前运行。

因此,在浏览器甚至获取edit.php之前,将支票放置在index.php中的表单提交处理程序中的适当位置:

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

而且,您确实确实需要修复易受攻击的数据库代码 通常, $绝不能出现在SQL查询字符串中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM