[英]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.