-1

如果我以用户身份登录,我将无法访问我自己的个人资料页面 - 我已在每个页面的顶部设置此规则:

登录页面:

  <?php  session_start();
   $password = $this->input->post('password');
   if($password == '1'){$_SESSION['loggedin'] = 1;}
     ?>

然后应将用户带到主页:

<?php  session_start();
  if(! isset($_SESSION['loggedin']))
  header("location:http://localhost/ci/web-project-jb.php/start");

?>

<div id="header">
  <h1> 
    SpaceBook: <?=$username?>'s Home Page
  </h1>
</div>

如果未注册用户尝试手动导航到我的任何网页,他们将被带到“开始”页面:

 <?php  $_SESSION['username'] = null;?>
 <body id="start">

<div id="header">
<h1>
 SpaceBook: Start Page
</h1>

只是为了确保会话已被销毁

我在我的注销功能中设置了它将破坏会话:

 function logout()
{
$this->session->sess_destroy();
redirect ('start');
 }

我有一个 session_start(); 在我登录后在我的主页上(在我的登录页面上也有)但是由于我已经将上面的 if 语句放在我不能再以注册用户身份登录 - 为什么会发生这种情况?我什至在登录页面调用了 session_start。我也有一个登录控制器,我在其中传递我的登录参数。我需要在这里提及登录吗?控制器:

   function loguserin()

    {

$this->load->helper(array('form', 'url'));

$this->load->library('form_validation');

$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]|trim');
$this->form_validation->set_rules('password', 'Password', 'required|md5|trim');


$username = $this->input->post('username');
$password = $this->input->post('password');

$valid = $this->membership->validateUser($username, $password);

if ($this->form_validation->run() && $valid == true)
{
    $this->session->set_userdata('status', 'OK');
    $this->session->set_userdata('username', $username);

    redirect('home');
}
else
{
    $this->session->set_userdata('status', 'NOT_OK');
    $this->load->view('shared/header');
    $this->load->view('account/logintitle');
    $this->load->view('account/loginview');
    $this->load->view('shared/footer');
    }
  }
4

1 回答 1

0

您的代码似乎不太有效。if(!isset($_SESSION['loggedin']))那条线应该没问题。当您说要重置会话时,使用$this->session->sess_destroy();代替不是更好<$_SESSION['username'] = null;?>吗?

最后,<$_SESSION['username'] = null;?>似乎是一个重置代码。如果您登录然后访问带有此代码的页面,它只会结束会话...您确定您没有这样做吗?

于 2012-12-05T01:45:26.550 回答