Php &引用;和$会话[';用户id';]=发布人;不起作用

Php &引用;和$会话[';用户id';]=发布人;不起作用,php,mysql,session,Php,Mysql,Session,基本上我有一个网站,人们可以发布主题或讨论,我添加了一个edit_post功能,运行良好,但在测试中,我意识到通过更改URL,人们可以编辑其他人的帖子,我尝试实现一个检查,以便只有发帖子的人可以编辑它,但运气不好,我没有收到任何错误,但它现在不允许其他用户编辑,但也不允许主题创建者编辑 if ( isset($_GET['edit'])) { $id = $_GET['edit']; $res = mysql_query("SELECT users.user_id, us

基本上我有一个网站,人们可以发布主题或讨论,我添加了一个edit_post功能,运行良好,但在测试中,我意识到通过更改URL,人们可以编辑其他人的帖子,我尝试实现一个检查,以便只有发帖子的人可以编辑它,但运气不好,我没有收到任何错误,但它现在不允许其他用户编辑,但也不允许主题创建者编辑

if ( isset($_GET['edit'])) {

    $id =   $_GET['edit'];
    $res =  mysql_query("SELECT users.user_id, users.username, users.profile, topics.topic_id, topics.category, topics.sub_category, topics.subsub_category, topics.topic_data, 
            topics.posted_by, topics.posted, topics.view, topics.invisipost
    FROM    `topics` 
    JOIN    `users` on topics.posted_by = users.user_id WHERE topic_id='$id'"); 
    $rows = mysql_fetch_array($res);
}
if ( isset($_POST['topic_data'])) {
    $topic_data = $_POST['topic_data'];
    $id = $_POST['id'];
    $sql = "UPDATE topics SET topic_data='$topic_data' WHERE topic_id='$id' AND '".$_SESSION['user_id']."'='$posted_by'";
    $res = mysql_query($sql) or die("Could not update".mysql_error());
    header("Location: view_topic.php?topic_id=$id");
}

您的查询应如下所示:

"UPDATE topics SET topic_data='$topic_data' WHERE 
topic_id='$id' AND posted_by ='".$_SESSION['user_id']."'";
因为发布者是列…

应该是

AND posted_by='".$_SESSION['user_id']."'"; //posted_by is column name
而不是

AND '".$_SESSION['user_id']."'='$posted_by'";
试试这个

if ( isset($_POST['topic_data']) and $_SESSION['user_id']==$posted_by) {
$topic_data = $_POST['topic_data'];
$id = $_POST['id'];
$sql = "UPDATE topics SET topic_data='$topic_data' WHERE topic_id='$id'  ";
$res = mysql_query($sql) or die("Could not update".mysql_error());
header("Location: view_topic.php?topic_id=$id");
}