Php 设置会话规则后,我无法访问我的主页-这是为什么?
如果我以用户身份登录,我将无法访问我自己的个人资料页面-我已在每个页面的顶部设置了此规则: 登录页面:Php 设置会话规则后,我无法访问我的主页-这是为什么?,php,session-variables,Php,Session Variables,如果我以用户身份登录,我将无法访问我自己的个人资料页面-我已在每个页面的顶部设置了此规则: 登录页面: <?php session_start(); $password = $this->input->post('password'); if($password == '1'){$_SESSION['loggedin'] = 1;} ?> 我有一个会话_start();在我登录后在我的主页上(也在我的登录页面上),但是既然我已经把上面的if语
<?php session_start();
$password = $this->input->post('password');
if($password == '1'){$_SESSION['loggedin'] = 1;}
?>
我有一个会话_start();在我登录后在我的主页上(也在我的登录页面上),但是既然我已经把上面的if语句放进了我的主页,我就不能再以注册用户的身份登录了——为什么会发生这种情况?我甚至在登录页面上调用了session_start。我也有一个登录控制器,在那里我传递我的登录参数。我需要在这里提到loggedin吗?控制器:
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');
}
}
你的代码似乎不太有效<代码>如果(!isset($\u SESSION['loggedin'])适合该行。当您说要重置会话时,使用
$this->session->sess_destroy()不是更好吗代码>而不是
最后,
似乎是一个重置代码。如果您登录后访问一个带有此代码的页面,它将简单地结束会话。。。你确定你没有这样做吗?如果(!isset($\u SESSION['loggedin'])==true)
可以是如果(!isset($\u SESSION['loggedin'])
,你还需要在任何可能发出$\u SESSION
请求的页面顶部设置SESSION start
。。因此,从外观上看,每个页面都可能重复。您的登录页面是否确实发送了输入的密码?据我所见,没有地方可以真正登录<代码>$this->input->post('password')
很可能是空的,因为您没有允许用户登录的位置。我在我的viewc页面的开头添加了这个:is标题(“location:localhost/ci/web project jb.php/start”;)代码>与起始页不同的页面;或者它是起始页本身。。。?在起始页上。header(“location:localhost/ci/web project jb.php/start”;)是当任何人试图在不登录的情况下导航到主页时,客户端将返回到的起始页。这是同一页。主页中的标题行功能-它们使用单独的屏幕登录。我的站点从一个起始页开始,然后是登录屏幕,然后是主页。我看到了,所以现在的事实是,会话设置不正确,并且仍然假设用户即使在登录之后也没有登录。你能为你的登录页面发布代码吗?确保在所有页面上都有session\u start()
,并确保在将用户重定向到主页之前正确设置了$\u session['loggedin']
变量。这是我的登录页面--这是登录页面的全部内容,因为这不是阻止导航到的页面。但也许正如你所说,我没有正确设置loggedin变量。以下是网页:
<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');
}
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');
}
}