Php 安全代码点火器视图
我在Codeigniter中有这个查看页面Php 安全代码点火器视图,php,codeigniter,session,Php,Codeigniter,Session,我在Codeigniter中有这个查看页面 <?php $is_logged_in = $this->session->userdata('is_logged_in'); if (!isset($is_logged_in) || $is_logged_in != true) { return false; } ?> <html> <head> <title
<?php
$is_logged_in = $this->session->userdata('is_logged_in');
if (!isset($is_logged_in) || $is_logged_in != true)
{
return false;
}
?>
<html>
<head>
<title></title>
<link rel="stylesheet" href="<?php echo base_url();?>css/style.css" type="text/css" media="screen" />
</head>
<body>
<p><?php echo form_open('it/create'); ?></p>
<p><?php echo form_input('department', 'department'); ?></p>
<p><?php echo form_textarea('problem', 'Issue'); ?></p>
<p><?php echo form_submit('submit', 'Submit'); ?></p>
<p><?php echo form_close(); ?></p>
</body>
</html>
但是,当我直接从url登录到视图时,它会毫无问题地打开,这有什么不对呢?我甚至直接在视图页面中添加了会话,就像我添加的一样,但它会打开
更新:这就是我在另一个控制器中添加会话的地方:
$data = array(
'username' => $this->input->post('username'),
'is_loged_in' => 'true' );
$this->session->set_userdata($data);
redirect('create/create_issue');
public function create_issue()
{
$is_logged_in = $this->session->userdata('is_logged_in');
if (is_logged_in )
{
redirect();//redirect your login page to the user
} else {
$this->load->view('v_it');
}
}
在你的控制器里。不确定您认为return false在视图中应该做什么,但它没有退出任何东西,只是将false返回到别处,然后继续显示HTML。如果您确实想在控制器本身中使用这种逻辑,只需检查是否已登录,如果返回false,则根本不加载视图。您应该将授权逻辑写入控制器,这会对您有所帮助。即使您需要将逻辑写入视图,请参阅下文 带内置控制器:
$data = array(
'username' => $this->input->post('username'),
'is_loged_in' => 'true' );
$this->session->set_userdata($data);
redirect('create/create_issue');
public function create_issue()
{
$is_logged_in = $this->session->userdata('is_logged_in');
if (is_logged_in )
{
redirect();//redirect your login page to the user
} else {
$this->load->view('v_it');
}
}
w在视图逻辑中:
<?php
$is_logged_in = $this->session->userdata('is_logged_in');
if (!isset($is_logged_in) || $is_logged_in != true)
{
echo "you are not valid user";
}
else{
?>
<html>
<head>
<title></title>
<link rel="stylesheet" href="<?php echo base_url();?>css/style.css" type="text/css" media="screen" />
</head>
<body>
<p><?php echo form_open('it/create'); ?></p>
<p><?php echo form_input('department', 'department'); ?></p>
<p><?php echo form_textarea('problem', 'Issue'); ?></p>
<p><?php echo form_submit('submit', 'Submit'); ?></p>
<p><?php echo form_close(); ?></p>
</body>
</html>
<?php } ?>
你不应该在视图中使用逻辑,你必须在控制器中添加逻辑。正如我在上面添加的,它首先在控制器中,它不起作用,这就是我在视图中添加逻辑的原因。我给你的更改不应该影响你的登录能力,从我所看到的,它与登录过程无关。我不知道问题出在哪里,我刚刚复制并粘贴了您的答案,并删除了构造
函数和也记录在
函数中。我只有您在create
类中添加的这个函数