Rumah >pembangunan bahagian belakang >tutorial php >PHP中session详解
简介:这是PHP中session详解的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。
class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=324031' scrolling='no'> 综述 将d:\Apache\php\prepend.php文件中的一段程序改为如下样子:
if (!isset($_PHPLIB) or !is_array($_PHPLIB)) {
$_PHPLIB["libdir"] = "d:/Apache/php/"; //放phplib下php目录的路径
}
修改d:\Apache\php\local.inc文件:
class DB_Example extends DB_Sql {
var $Host = "localhost"; // mysql 数据库所在主机名
var $Database = "test"; //数据库名
var $User = "root"; //数据库用户名
var $Password = "1234567"; //数据库用户密码
}
最后根据phplib目录下的stuff子目录中的create_database.mysql文件生成初始表。
由于每一个使用phplib的页面首先必须可以找到运行phplib所必需的类库文件,我们可以在php.ini中设置auto_prepend变量来支持,phplib中包含一个prepend.php文件,并将auto_prepend指定为"d:/Apache/php/prepend.php"(带引号)后,各页面就会自动包含phplib类库,我们还可以将phplib类库所在目录加进include变量中,以便可以找到这些文件。
2、调用page_open()函数
在每一个使用phplib的页面中,必须首先调用page_open函数进行初始化,例如:
<?php
page_open(array("sess" => "Test_Session"));
?>
<?php $sess->register( "varname"); ?>
<?php
page_open(array("sess" => "Test _Session"));
$sess->register( "welcome"); //注册变量$welcome,注意不需要加$
$welcome="Hello,PHP world!";
……
page_close();
?>
<?php
page_open();//开始session
echo $welcome;//显示第一页中定义的$welcome
page_close();//保存状态信息
?>
<?php
page_open(array("sess" => "Test _Session"));
……
$sess->unregister( "variable_name");
……
page_close();
?>
在PHP4版本中是如何实现session的?
php4的session也靠cookies保存session id,用文件系统保存变量(默认情况下),因此,它的session变量不能保存对象。当然也可以将session保存在数据库中。
在php4中有关session的函数很多(详见php.ini配置一文),通常情况下我们只需要调用三个函数即可:sesssion_start()、session_register()、session_is_registered()。
在需要用到session的每一页的最开始处调用session_start()函数, 例如:
<?session_start()?>
<html><body>
<?
$welcome="hello world !";
session_register("welcome");//注册$welcome变量,注意没有$符号
if(session_is_registered("welcome"))//检查$welcome变量是否注册
echo "welcome变量已经注册了!";
else
echo "welcome变量还没有注册!";
?>
</body></html>
首先在mysql中创建一个sessions数据库,并且创建一个sessions表:
mysql> CREATE DATABASE sessions;
mysql> GRANT select, insert, update, delete ON sessions.* TO phpsession@localhost
-> IDENTIFIED BY 'phpsession';
mysql> CREATE TABLE sessions (
-> sesskey char(32) not null,
-> expiry int(11) unsigned not null,
-> value text not null,
-> PRIMARY KEY (sesskey)
-> );
<?
$SESS_DBHOST = "localhost"; /* 数据库主机名 */
$SESS_DBNAME = "sessions"; /* 数据库名 */
$SESS_DBUSER = "phpsession"; /* 数据库用户名 */
$SESS_DBPASS = "phpsession"; /* 数据库密码 */
$SESS_DBH = "";
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");
……//定制函数
session_set_save_handler( "sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
?>
<?
$SESS_DBM = "";
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");
……//定制函数
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
?>
<?php
……
if ($handler == "dbm") include("session_dbm.php");//使用何种接口
elseif ($handler == "mysql") include("session_mysql.php");
else ……
session_start();
session_register("count");
……
?>
<?
session_start();
……//验证过程
session_register("reguser");
?>
在另一页面中检查用户是否登录
<?
session_start();
if(isset($reguser)&&$reguser!=""){//如果已经登录
echo "亲爱的用户,欢迎你";
}else{//如果没有登录
echo "请先注册!";
}
?>
<?
session_destroy();
……
?>
//Start a PHP session to preserve variables.
if ( empty($mysessionname) ) {
$micro = microtime();
$micro = str_replace(" ","",$micro); // strip out the blanks
$micro = str_replace(".","",$micro); // strip out the periods
$mysessionname = "po_maint" . $micro;
}
session_name($mysessionname);
session_start();
“PHP中session详解”的更多相关文章 》
爱J2EE关注Java迈克尔杰克逊视频站JSON在线工具
http://biancheng.dnbcw.info/php/324031.html pageNo:15