繁体   English   中英

保护PHP页面的最佳方法是什么?

[英]What is the best way to protect a PHP page?

我想在我的网站上实现一个登录系统,如果用户当前未登录,它将用户重定向到login.php。我目前正在使用这种方法:

<?php 
start_session();

if (!isset(_SESSION['user_id']))
{
    header('location:login.php');
    exit();
}
$user_details = get_user_details_from_db(_SESSION['user_id']');
?>

<html lang="en">
<head>  <meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<p><?php echo "Welcome $user_details['name']?> You are in a protected area</p>
</body>
</html>

还是应该将整个内容封装在if的其他情况下,例如:

<?php 
start_session();

if (isset(_SESSION['user_id']))
{
    $user_details = get_user_details_from_db(_SESSION['user_id']'); 
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>  <meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<p><?php echo "Welcome $user_details['name']?> You are in a protected area</p>
</body>
</html>
<?
}
else
{
    header('location:login.php');
    exit();
}
?>

我已经看到两种方法都在地方使用,所以想知道第一种方法是否有问题。

谢谢。

您可以同时使用两种方法。 第一个用于保护整个页面,第二个用于例如保护指向受保护页面的按钮或链接。

好吧,您可以同时使用两种方法。 您在第一个错误中会遇到的唯一错误是,您在第9行忘记了$。如果您确实想保护自己的网站,则应检查是否从会话中获得了ID用户信息。

我更喜欢第一种方法。 如果会话不正确,则重定向并结束执行,否则继续。 另外,您可以检查用户详细信息是否正确:

$user_details = get_user_details_from_db($_SESSION['user_id']);
if (!isset($user_details['name']) {
    // redirect..
    exit();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM