我想在我的网站上实现一个登录系统,如果用户当前没有登录,则会将用户重定向到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();
}
?>
我已经看到两种方法都在地方使用,所以想知道第一种方法是否有问题。
感谢。
答案 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();
}