CI使用PHP原生session的问题
可能 这个问题和 CI没有什么关系 。。不过不知道可以放到哪里。。就来这里问了自从上次使用CI的session出 问题 之后 。就开始尝试使用PHP的 原生session。但是还是出现问题 ,由于是菜鸟。不知道怎么解决了。上来问问大家
情况是这样的
我有一个模板文件,叫base_page.php,其他所有页面都是基于这个模板的,这个模板文件这样写的
<?php session_start();echo session_id();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Blog</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link href="<?php echo base_url(); ?>css/main.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript" src="<?php echo base_url(); ?>js/articles_list.js"></script>
</head>
<body>
<div id="wrapper">
<div id="header-wrapper">
<?php include('header.php'); ?>
</div>
<!-- end #header-wrapper -->
<div id="page">
<div id="banner"><a href="#"><img src="<?php echo base_url(); ?>/images/img05.jpg" alt="" /></a></div>
<div id="page-bgcontent">
<?php if ($page_type == 'articles_list'):?>
<?php include('articles_list.php'); ?>
<?php endif;?>
<?php if ($page_type == 'login'):?>
<?php include('login.php'); ?>
<?php endif;?>
<?php include('sidebar.php'); ?>
<div style="clear: both;"> </div>
</div>
<?php include('footer.php'); ?>
</div>
<!-- end #page -->
</div>
</body>
</html>
这个文件最开始有session_start(),,然后我想获得这个session的 ID
在这个模板文件的<?php include('header.php'); ?>
这个 header文件里面,有一个login功能
代码是这样的
<div id="header">
<div id="logo">
<h1><a href="#">BLOG</a></h1>
<h2>Brand New</h2>
</div>
<div id="search">
<form method="get" action="">
<fieldset>
<input type="text" id="search-text" name="s" value="" />
</fieldset>
</form>
</div>
<!-- end #logo -->
</div>
<!-- end #header -->
<div id="menu">
<ul>
<li class="first"><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
<?php if (!isset($_SESSION['username'])): ?>
<a href="<?php echo base_url(); ?>index.php/login/" id="login">Login</a>
<?php elseif (isset($_SESSION['username'])): ?>
<a href="<?php echo base_url(); ?>index.php/logout/" id="logout">Logout</a>
<?php endif; ?>
</div>
<!-- end #menu -->
然后login的controller是这样写的
class Login extends Controller
{
function Login()
{
parent::Controller();
}
function index()
{
if ((isset($_POST['username'])) && (isset($_POST['password'])))
{
$username = trim($_POST['username']);
$password = trim($_POST['password']);
$data['error'] = "";
// Check whether the usename or the password is empty
if (empty($username))
{
$data['error'] = "Username cannot be NULL!";
}
elseif (empty($password))
{
$data['error'] = "Password cannot be NULL!";
}
if ((!empty($username)) && (!empty($password)))
{
$sql = "SELECT `u_id`, `u_password` FROM `user` WHERE `u_username` = '" . $username . "'";
$this->load->model('blog_model');
$result = $this->blog_model->query($sql);
// If username does not exist
if (empty($result))
{
$data['error'] = "User does not exist!";
}
// If password does not match
elseif ($password != $result->u_password)
{
$data['error'] = "Password error!";
}
elseif ($password == $result->u_password)
{
session_start();
$_SESSION['user_id'] = $result->u_id;
$_SESSION['username'] = $username;
redirect(base_url() . "index.php");
}
}
}
$data['page_type'] = 'login';
$this->load->view('basic_page', $data);
}
}
这个时候,如果我首先打开首页,由于 session_start()的作用,会创建一个session文件 。。这个时候,如果我点击login这个超级连接。。我发现 。。又一个新的session文件又被创建了 。而且以后的login的过程中,操作的都是新创建的session,第一个完全没有内容
等我登陆之后 ,,如果新开一个页面,,再进入首页,,会操作第一个session,这样由于没有内容,用户处于没有登陆状态,如果我点击login,会发现,第2个有内容的session被调用,这样用户就处于登陆状态了。。。。。我感到很奇怪。。不知道为什么会这样。。
不知道这样有没有说清楚。。如果需要其他什么问题活着补充的话。我请告诉我 。。谢谢 。。我在线等的 Hex 发表于 2014-6-12 20:08
这个是直接替换的 Session 类,肯定是支持,但是和文档描述的接口可能有不同。
...
恩,试过了,是支持的.对于过期时间怎么设置呢,只能通过 ini_set 来全局设置 session.gc_maxlifetime么,单一session的过期时间可以进行设置么?
西斯莱杰 发表于 2014-6-13 09:49
恩,试过了,是支持的.对于过期时间怎么设置呢,只能通过 ini_set 来全局设置 session.gc_maxlifetime么 ...
Session 都是统一过期吧,Session 不是缓存,要搞清楚用途。
西斯莱杰 发表于 2014-6-12 19:06
2.1.4 版本,支持么?
这个是直接替换的 Session 类,肯定是支持,但是和文档描述的接口可能有不同。
用我发布的 Session 类即可解决问题,不用这么纠结。 哦 。。。我去看看 ,谢谢啊 ,只是我不知道为什么会这样 。。。感觉没有什么问题 我知道了。。我刚开始打的时候用的URL是 127.0.01/myblog,然后跳转之后的url变成了localhost以至于可能误认为2个不同的地址或者什么的,,如果一开始就打localhost/myblog的话。。就不会出现问题了 。。哈哈 。。谢谢哑 Hex 发表于 2011-1-31 11:46 static/image/common/back.gif
用我发布的 Session 类即可解决问题,不用这么纠结。
你好,我新手一个,看到好多地方都是用你的session类,但是没找到地方下载啊,提供个连接把。谢谢啊 白色格调 发表于 2012-12-12 22:30 static/image/common/back.gif
你好,我新手一个,看到好多地方都是用你的session类,但是没找到地方下载啊,提供个连接把。谢谢啊 ...
http://codeigniter.org.cn/forums/thread-4007-1-1.html
常去代码区看看啊~ Hex 发表于 2012-12-13 10:42
http://codeigniter.org.cn/forums/thread-4007-1-1.html
常去代码区看看啊~
2.1.4 版本,支持么?
页:
[1]
2