PHPLIB的基本使用
时间:2007-02-17 来源:PHP爱好者
1.2.2 PHPLIB的基本用法和实现方法
PHPLIB包含一套提供会话跟踪、允许会话和允许用户的变量、用户认证和权限检查的核心类和函数。在这些类之上,PHPLIB提供了一套普遍所需的”background”类和一套”HTMLwidgets”,这些类可以快速生成基于用户界面的HTML代码。
不需要改变PHPLIB的任何文件。利用PHPLIB可以包含2个或3个文件,安装:local.inc,setup.inc在某些情况下安装prepend. Php3。你不需要改变PHPLIB的任何其他文件。
在PHPLIB的一般应用中只需改变以下三个文件:
1.2.3 SESS 的使用 -- 实现参数传递的方法
SESSION可以保存全局变量名以及提供一套函数从数据库中存取这些变量。
可取得实例变量
Classname 类名
Magic 用于创建ID时的隐藏字串
Mode 传播sessionID的模式。Cookie或get。
Fallback_mode 当$mode不起作用时传播sessionID的模式。$mode设置为cookie
时,$fallback_mode设置为get。
Lifetime 使用session cookies的分钟数。
Allowcache Session页面的控制缓存。如果设置为passive(默认),不发送缓
存控制头。如果设置为no,页面在HTTP/1.1或HTTP/1。0下不被缓
存。如果设置为private,页面在HTTP/1。1下缓存在HTTP/1。0下
不缓存。
Allowcache_expire 允许缓存时页面可以长时间缓存。
Auto_init 在session建立时安装的文件
可取得实例方法
register($varname)
将全局变量名作为session变量记录。
Unregister($varname)
不把全局变量当session变量记录。不会删除变量,但它的值在页面结束时丢失。它不再保留进数据库。
Is_register($varname)
如果变量名用session记录返回真,否则假。
Delete()
删除当前session。
Delete()之后所有session数据都将从数据库中删除。这页的session对象也不可用。因此,在这个session中不要调用page_close()。即使在delete()之后还是可以取得该页的session变量,但在后一页中将丢失。
在cookie模式中,在调用delete()之后如果没有HTML输出,就可以设置新的cookie,可用page_open()打开一个新的session。这样做懂得话,可以再登记一些前面页面的session变量,为新的session调用page_close()。这可以让你改变session,有选择的执行前面页面的session数据。
url($url)
返回一个指向当前session的URL。在get模式中,当前session id附在这个URL后,否则只返回这个URL。
Purl($url)
是print $this->url($url)的简便方式。
Self_url()
返回一个指向当前页面的URL,包括PHP_SELF和QUERY_STRING信息。在get模式中将包含session id。
Pself_url()
是print $this->self_url()的简便方式。
Hidden_session()
增加一个包含session名字和id的隐藏表单元素。
Add_query($qarray)
在GET查询模式中为参数在当前URL后返回字串。
Padd_query($qarray)
是print $this->add_query($qarray)的简便方式。使用如下:
--------------------------------------------------------------------------------
<a href="<<?
$sess->pself_url().$sess->padd_query(array("again"=>"yes"))
?>"> Reload</a> and log in?
--------------------------------------------------------------------------------
reimport_get_vars()
传递表单变量时,表单变量导入PHP,再调用page_open()时,数据库中的值将覆盖新的变量值,表单值丢失。
如果你激活track_vars,可以直接取得HTTP_GET_VARS,这就不是一个问题。但是有一些脚本需要表单变量。
这些脚本可以调用reimport_x_vars()。在恢复session变量后这些函数将再次读取跟踪变量数组和再次初始化全局变量。
内部实例方法
get_id($id_to_use)
get_id()用于内部决定session标识。当前session标识是128位,由模5产生(uniqid($this->magic))。
用一个可选session id作为参数调用get_id();如果你想不中断session来改变session id可以调用该函数(替换老的id,保留页面)
例子:
--------------------------------------------------------------------------------
class My_Session extends Session {
var $classname = "My_Session"; ## Persistence support
var $mode = "cookie";
var $lifetime = 0; ## use session cookies
## which container to use
var $that_class = "Session_sql";
}
--------------------------------------------------------------------------------
使用session要使用页面管理函数。在下面例子中session管理的名字是sess。
将session字类的名字作为页面管理函数的参数。
--------------------------------------------------------------------------------
page_open(array("sess" => "My_Session"));
--------------------------------------------------------------------------------
session可以传递变量,它将变量保存在数据库中,需要时可直接读取。例:
<?php
page_open(array(“sess”=>”MY_Session”));
$sess->register($text); //将$text变量保存在数据库中。
$text=”xxxx”;
page_close();
?>
若想在文件out.php3中读取该$text,如:
<?php
page_open(array(“sess”=>”Session”));
if($sess->is_registered($text)){ //判断$text是否存在数据库中。
echo aaa;
echo $text;
}else{
echo bbb;
}
page_close();
?>
结果将输出:
aaaxxxx
若想删除已记录的变量可用unregister()。调用该函数后,在当前页面还能引用该变量,在此页面结束后不能在引用此变量。
若想删除所有session相关数据包括数据库中的session记录,当前session id和用户浏览器中的session cookie,可以调用$sess->delete()。这普遍用于商务中用户清空自己当前购物车。若想再保留某些数据可再调用register。如下:
--------------------------------------------------------------------------------
<?php
page_open(array("sess" => "Shop_Session"));
// send order as mail
mail_order($shopowner, $user, $cart);
// delete the current session
$sess->delete();
// now get a new session id, but retain the users
// address and name:
page_open(array("sess" => "Shop_Session")); // will force auto_init again!
$sess->register("user"); // could be done in auto_init as well
?>
--------------------------------------------------------------------------------
1.2.4 AUTH 的使用 -- 实现多级用户认证的方法
AUTH可用于认证一个session,即识别session的用户是否有效。
1.2.5 TABLE class 的使用 -- 实现
使用TABLE类可以简洁的显示2维数组或数据库的查询结果。
1.2.6 SQL class的使用
DB_Sql可用于连接SQL数据库。对数据库进行操作。
Query($query_string)
可以对数据库执行$query_string。
Next_record()
可以取得查询结果中的记录。
Num_rows()
可以取得查询结果中记录的数目。
F($field)
可以取得查询记录中字段$field。类似于Record($field)。
例子:
--------------------------------------------------------------------------------
$q = new DB_Article;
$query = "select * from news where news_index=’”.$news_index.”’”;
$q->query($query);
while($q->next_record()) {
echo $q->f("art_id");
echo $q->f("article"));
}
php爱好者站 http://www.phpfans.net 为phper提供一切资讯.
PHPLIB包含一套提供会话跟踪、允许会话和允许用户的变量、用户认证和权限检查的核心类和函数。在这些类之上,PHPLIB提供了一套普遍所需的”background”类和一套”HTMLwidgets”,这些类可以快速生成基于用户界面的HTML代码。
不需要改变PHPLIB的任何文件。利用PHPLIB可以包含2个或3个文件,安装:local.inc,setup.inc在某些情况下安装prepend. Php3。你不需要改变PHPLIB的任何其他文件。
在PHPLIB的一般应用中只需改变以下三个文件:
1.2.3 SESS 的使用 -- 实现参数传递的方法
SESSION可以保存全局变量名以及提供一套函数从数据库中存取这些变量。
可取得实例变量
Classname 类名
Magic 用于创建ID时的隐藏字串
Mode 传播sessionID的模式。Cookie或get。
Fallback_mode 当$mode不起作用时传播sessionID的模式。$mode设置为cookie
时,$fallback_mode设置为get。
Lifetime 使用session cookies的分钟数。
Allowcache Session页面的控制缓存。如果设置为passive(默认),不发送缓
存控制头。如果设置为no,页面在HTTP/1.1或HTTP/1。0下不被缓
存。如果设置为private,页面在HTTP/1。1下缓存在HTTP/1。0下
不缓存。
Allowcache_expire 允许缓存时页面可以长时间缓存。
Auto_init 在session建立时安装的文件
可取得实例方法
register($varname)
将全局变量名作为session变量记录。
Unregister($varname)
不把全局变量当session变量记录。不会删除变量,但它的值在页面结束时丢失。它不再保留进数据库。
Is_register($varname)
如果变量名用session记录返回真,否则假。
Delete()
删除当前session。
Delete()之后所有session数据都将从数据库中删除。这页的session对象也不可用。因此,在这个session中不要调用page_close()。即使在delete()之后还是可以取得该页的session变量,但在后一页中将丢失。
在cookie模式中,在调用delete()之后如果没有HTML输出,就可以设置新的cookie,可用page_open()打开一个新的session。这样做懂得话,可以再登记一些前面页面的session变量,为新的session调用page_close()。这可以让你改变session,有选择的执行前面页面的session数据。
url($url)
返回一个指向当前session的URL。在get模式中,当前session id附在这个URL后,否则只返回这个URL。
Purl($url)
是print $this->url($url)的简便方式。
Self_url()
返回一个指向当前页面的URL,包括PHP_SELF和QUERY_STRING信息。在get模式中将包含session id。
Pself_url()
是print $this->self_url()的简便方式。
Hidden_session()
增加一个包含session名字和id的隐藏表单元素。
Add_query($qarray)
在GET查询模式中为参数在当前URL后返回字串。
Padd_query($qarray)
是print $this->add_query($qarray)的简便方式。使用如下:
--------------------------------------------------------------------------------
<a href="<<?
$sess->pself_url().$sess->padd_query(array("again"=>"yes"))
?>"> Reload</a> and log in?
--------------------------------------------------------------------------------
reimport_get_vars()
传递表单变量时,表单变量导入PHP,再调用page_open()时,数据库中的值将覆盖新的变量值,表单值丢失。
如果你激活track_vars,可以直接取得HTTP_GET_VARS,这就不是一个问题。但是有一些脚本需要表单变量。
这些脚本可以调用reimport_x_vars()。在恢复session变量后这些函数将再次读取跟踪变量数组和再次初始化全局变量。
内部实例方法
get_id($id_to_use)
get_id()用于内部决定session标识。当前session标识是128位,由模5产生(uniqid($this->magic))。
用一个可选session id作为参数调用get_id();如果你想不中断session来改变session id可以调用该函数(替换老的id,保留页面)
例子:
--------------------------------------------------------------------------------
class My_Session extends Session {
var $classname = "My_Session"; ## Persistence support
var $mode = "cookie";
var $lifetime = 0; ## use session cookies
## which container to use
var $that_class = "Session_sql";
}
--------------------------------------------------------------------------------
使用session要使用页面管理函数。在下面例子中session管理的名字是sess。
将session字类的名字作为页面管理函数的参数。
--------------------------------------------------------------------------------
page_open(array("sess" => "My_Session"));
--------------------------------------------------------------------------------
session可以传递变量,它将变量保存在数据库中,需要时可直接读取。例:
<?php
page_open(array(“sess”=>”MY_Session”));
$sess->register($text); //将$text变量保存在数据库中。
$text=”xxxx”;
page_close();
?>
若想在文件out.php3中读取该$text,如:
<?php
page_open(array(“sess”=>”Session”));
if($sess->is_registered($text)){ //判断$text是否存在数据库中。
echo aaa;
echo $text;
}else{
echo bbb;
}
page_close();
?>
结果将输出:
aaaxxxx
若想删除已记录的变量可用unregister()。调用该函数后,在当前页面还能引用该变量,在此页面结束后不能在引用此变量。
若想删除所有session相关数据包括数据库中的session记录,当前session id和用户浏览器中的session cookie,可以调用$sess->delete()。这普遍用于商务中用户清空自己当前购物车。若想再保留某些数据可再调用register。如下:
--------------------------------------------------------------------------------
<?php
page_open(array("sess" => "Shop_Session"));
// send order as mail
mail_order($shopowner, $user, $cart);
// delete the current session
$sess->delete();
// now get a new session id, but retain the users
// address and name:
page_open(array("sess" => "Shop_Session")); // will force auto_init again!
$sess->register("user"); // could be done in auto_init as well
?>
--------------------------------------------------------------------------------
1.2.4 AUTH 的使用 -- 实现多级用户认证的方法
AUTH可用于认证一个session,即识别session的用户是否有效。
1.2.5 TABLE class 的使用 -- 实现
使用TABLE类可以简洁的显示2维数组或数据库的查询结果。
1.2.6 SQL class的使用
DB_Sql可用于连接SQL数据库。对数据库进行操作。
Query($query_string)
可以对数据库执行$query_string。
Next_record()
可以取得查询结果中的记录。
Num_rows()
可以取得查询结果中记录的数目。
F($field)
可以取得查询记录中字段$field。类似于Record($field)。
例子:
--------------------------------------------------------------------------------
$q = new DB_Article;
$query = "select * from news where news_index=’”.$news_index.”’”;
$q->query($query);
while($q->next_record()) {
echo $q->f("art_id");
echo $q->f("article"));
}
php爱好者站 http://www.phpfans.net 为phper提供一切资讯.
相关阅读 更多 +