我正在建立评论系统,我希望用户能够编辑它们。我已经建立了一个有效的发布系统和一个有效的删除系统。当我尝试更新帖子时,它会将我重定向到?edit_success网址。但是,它并没有更新帖子。
将用户带到更新页面的表单。
<form class='edit-form' method='POST' action='editmessage.php'>
<input type='hidden' name='cid' value='".$row['cid']."'>
<input type='hidden' name='uid' value='".$row['uid']."'>
<input type='hidden' name='date' value='".$row['date']."'>
<input type='hidden' name='content' value='".$row['content']."'>
<button>Edit</button>
</form>
表单提交后转到这个php文件
<?php include('header.php'); ?>
<body>
<div class="container">
<?php
$cid = $_POST['cid'];
$uid = $_POST['uid'];
$date = $_POST['date'];
$content = $_POST['content'];
echo "<form method='POST' action='includes/edit_post.inc.php'>
<input type='hidden' name='uid' value='".$_SESSION['username']."'>
<input type='hidden' name='date' value='".date(' Y-m-d ')."'>
<textarea class='ckeditor' name='content2'></textarea>
<br>
<button type='submit' class='btn btn-default' name='submit_vault_edit'>Edit</button>
</form>";
?>
</div>
<?php include('footer.php'); ?>
输入此表单后,将转到更新帖子的php脚本
<?php
include 'dbh.php';
if (isset($_POST['submit_vault_edit'])) {
$cid = $_POST['cid'];
$uid = $_POST['uid'];
$date = $_POST['date'];
$content = $_POST['content2'];
$sql = "UPDATE vaults SET content='$content' WHERE cid='$cid'";
$result = mysqli_query($conn, $sql);
header("Location: http://www.generationdiary.com/user_vault.php?editsuccess");
}
我的所有数据库连接都是正确的,所有内容都是按照这种意义设置的,我只是觉得我的代码中有一个问题(代码块3)
答案 0 :(得分:1)
您尚未从代码的第二部分传递cid
值。
您可以将其添加为
<input type='hidden' name='cid' value='".$cid."'>
您的代码对于valnurable sql injection是开放的