目前我有一个非常基本的 PHP 登录系统。我的 index.php 文件只是检查是否设置了会话,如果没有,它会将它们重定向到 login.php。我看到很多网站都达到了相同的效果,但完全是通过网站的索引。
例如,在http://twitter.com ,如果我没有登录,我将只登陆 twitter.com。如果我登录了,我也会登陆 twitter.com,只是内容不同。如何在我的网站上实现相同的效果?
我确信这是非常基本的,但这是我尚未探索的东西。
谢谢
目前我有一个非常基本的 PHP 登录系统。我的 index.php 文件只是检查是否设置了会话,如果没有,它会将它们重定向到 login.php。我看到很多网站都达到了相同的效果,但完全是通过网站的索引。
例如,在http://twitter.com ,如果我没有登录,我将只登陆 twitter.com。如果我登录了,我也会登陆 twitter.com,只是内容不同。如何在我的网站上实现相同的效果?
我确信这是非常基本的,但这是我尚未探索的东西。
谢谢
一个如何处理欢迎/用户index.php
站点的简单示例:
索引.php
require_once('configFile.php'); // session_start();.. and other stuff
if ($logged) {
require_once('userLogedIn/index.php');
} else {
require_once('welcome/index.php');
}
有很多方法可以做到这一点,但下面是一个原始示例。假设您的伪逻辑类似于...
if (!$logged_in) {
redirect('login.php');
}
else {
// show page content
}
你可以做...
if (!$logged_in) {
include('login.php');
}
else {
include('page-content.php');
}
包含不一定是必需的,但有助于保持整洁。
首先回答你自己的问题,如果你的索引文件可以包含用户提供的东西。如果是这样,请不要这样做!问题可能是来自该用户提供的针对您的登录信息的攻击向量。
那就是说让我帮你:
<?php
$session_id = session_id();
if (!empty($_COOKIE[$session_id]) && session_start() !== false && isset($_SESSION["user_id"])) {
echo "index page";
}
elseif (isset($_POST["login"])) {
// validate login ...
if ($valid_login === true) {
if (session_status() === PHP_SESSION_ACTIVE) {
session_regenerate_id();
}
else {
session_start();
}
$_SESSION["user_id"] = $user_id;
}
}
else {
echo "login page";
}
?>
我想你明白这里的想法。我们现在有一个文件来处理所有事情。