gpt4 book ai didi

php - 如何停止$_session消息的出现?

转载 作者:行者123 更新时间:2023-11-29 20:51:20 25 4
gpt4 key购买 nike

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

所以我有一个用户信息表,以及指向此 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";
}

?>

最佳答案

我相信 $delete 的计算结果为 true,因为该语句始终会成功执行,即使由于删除查询没有找到任何要删除的内容而未删除用户。

我个人会:

  • 首先,像您一样检查他们是否已登录
  • 其次,通过使用 SELECT 拉取用户的行并检查其是否存在/权限/等,根据 ID/ session 检查安全性。
  • 第三,如果用户有权限,则删除该行并设置变量 $bDeleted=true ...否则不要删除该行并设置 $bDeleted=false
  • 四、基于$bDeleted进行echo

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

关于php - 如何停止$_session消息的出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38021307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com