如何停止出现$ _session消息?

时间:2016-06-24 20:06:11

标签: php mysql sql-delete

这是我的项目删除页面。我希望能够只允许特定登录用户删除他们的记录/帐户。

所以我有一个用户信息表,以及这个delete.php页面的链接。以下代码允许他们删除自己的记录,但显示$_session['delete']消息,即使它不允许他们删除其他记录。

有人可以提供建议吗?

感谢。

<?php


 include 'dbconnect.php';

session_start();

// CHECK IF LOGGED IN //

if( ! $_SESSION['username'] ) {

header("Location: project-users-logout.php");
die();
}

// Build SQL Query
$sql = "SELECT * FROM registeredUsers";

// Run the Query
$query = mysqli_query($db,$sql);

$userid = mysqli_real_escape_string($db, $_GET['id']); 

$deleteQuery = "DELETE FROM registeredUsers 
                WHERE UserID = $userid
                AND UserName = '$_SESSION[username]'";

$delete = mysqli_query($db, $deleteQuery);  

if ($delete) { 

             /* SUCCESS */ 
            $_SESSION['delete'] = 'Record deleted';
             header ("Location: project-users-manage.php ");
             exit;

} else {

    echo "You do not have access to delete this user";
}

&GT;

1 个答案:

答案 0 :(得分:0)

我认为$ delete的计算结果为true,因为语句总是成功执行,即使用户没有被删除,因为删除查询没有找到要删除的内容。

我个人认为:

  • 首先,检查他们是否已经登录了
  • 其次,通过使用SELECT拉出用户的行并检查它是否存在/权限等来检查基于id / session的安全性。
  • 第三,如果用户有权限,请删除该行并设置变量$ bDeleted = true ...否则不要删除该行并设置$ bDeleted = false
  • 第四,基于$ bDeleted
  • 的回声

另外,我不会删除用户的行。使用数据库中的布尔字段将行标记为已删除更安全,并调整应用程序的逻辑以将这些行简单地视为已删除。这样,您可以在发生意外或心情变化时快速取消删除用户帐户。