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

时间:2014-07-30 09:47:43

标签: php authentication

我想在我的网站上实现一个登录系统,如果用户当前没有登录,则会将用户重定向到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 if else中,例如:

<?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();
}
?>

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

感谢。

3 个答案:

答案 0 :(得分:2)

您可以结合使用这两种方法。第1页用于保护整页,第2页用于保护按钮或指向受保护页面的链接。

答案 1 :(得分:1)

嗯,你可以做两种方法。您在第一个中遇到的唯一错误是,您忘记了第9行的$。如果您确实想要保护您的网站,则应检查您是否获得了从会话中获得的ID的用户详细信息。

答案 2 :(得分:1)

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

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