0

目前我有一个非常基本的 PHP 登录系统。我的 index.php 文件只是检查是否设置了会话,如果没有,它会将它们重定向到 login.php。我看到很多网站都达到了相同的效果,但完全是通过网站的索引。

例如,在http://twitter.com ,如果我没有登录,我将只登陆 twitter.com。如果我登录了,我也会登陆 twitter.com,只是内容不同。如何在我的网站上实现相同的效果?

我确信这是非常基本的,但这是我尚未探索的东西。

谢谢

4

3 回答 3

2

一个如何处理欢迎/用户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');
}
于 2013-10-15T22:35:05.353 回答
0

有很多方法可以做到这一点,但下面是一个原始示例。假设您的伪逻辑类似于...

if (!$logged_in) {
    redirect('login.php');
}
else {
    // show page content
}

你可以做...

if (!$logged_in) {
    include('login.php');
}
else {
    include('page-content.php');
}

包含不一定是必需的,但有助于保持整洁。

于 2013-10-15T22:30:21.283 回答
0

首先回答你自己的问题,如果你的索引文件可以包含用户提供的东西。如果是这样,请不要这样做!问题可能是来自该用户提供的针对您的登录信息的攻击向量。

那就是说让我帮你:

<?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";
}

?>

我想你明白这里的想法。我们现在有一个文件来处理所有事情。

于 2013-10-15T22:32:27.253 回答