Home >Backend Development >PHP Tutorial >Implementing the SESSION function in PHP3 (1)

Implementing the SESSION function in PHP3 (1)

WBOY
WBOYOriginal
2016-07-29 08:34:34729browse

SESSION函数库:session.inc.php3
if (!isset($__session_inc__)){
$__sessi
//require("cookie.inc.php3");
# -------------------------------------------------------------------  
# Session Management v1.0 21.6.1998  
# (c) Wild Karl Heinz   
#  
# This Include handle Session based variable handling  
#  
# Please feel free and use it. If you make it more functional  
# it would be nice to send me a copy.  
#  
# Don't forget - Mysql_connect !  
#  
# The database structure  
# Table structure for table 'session'  
#  
# CREATE TABLE session (  
# id int(11) DEFAULT '0' NOT NULL auto_increment,  
# sid varchar(20) DEFAULT '' NOT NULL,  
# val blob,  
# times timestamp(14),  
# PRIMARY KEY (id),  
# KEY sid (sid),  
# UNIQUE sid_2 (sid)  
# );  
#  
# You'll miss here a cron job to delete the old sessions from db  
# -------------------------------------------------------------------  
// 请注意上面被注释掉的CREATE TABLE语句,
// 你需要在你所使用的数据库上执行这条语句,
// 表名也可以不是session,那么就需要设置下面的$sess_table变量了。
// 此处你需要设置库名,和表名。
// 不过一般建议就使用session作为表名
$sess_db = 'dbname';  
$sess_table = 'session';  
# ----------------------------------------------------  
# Session_CheckID - 检查、设置并返回 Session-ID  
# 参数......: cookie保存时间(以分钟计)
# 也可不设置表示这个 cookie 只在当前session 有效
# 这其实就象ASP中SESSION的时效一样。
# 返回值....: 一个唯一的Session-ID (作为cookie存储)
# ----------------------------------------------------  
function Session_CheckID( $min )  
{
global $sess_sid;  
if( !$sess_sid ) {  
$sess_sid = uniqid( SC ); //取得一个唯一的随机数
/*
if( $min > 0 ) {  
SetCookie("sess_sid", $sess_sid, time()+($min*60), "/", "", 0 );  
}  
else {  
SetCookie("sess_sid", $sess_sid, "", "/", "", 0 );  
}  
上面是原先的代码,会出错。所以另外用了一个更好的函数。
函数库:cookie.inc.php3
*/
jssetcookie("sess_sid",$sess_sid,$min);
return( false );  
}  
else {  
return( true );  
}  
}  
# ----------------------------------------------------------  
# str2arr - 将字符串转换成session数组
# 参数.....: string
# 返回值...: 全局数组(其实就是session)  
#本函数用途:将字符串转换成session数组
#如"session[username]=yourid&session[userpass]=12345"
#将会被转换成下面的数组
# session[username]="yourid"
# session[userpass]="12345"
#请注意函数split(),each(),list(),eval()的用法。
#------------------------------------------------ ----------
function str2arr( $ts )
{
global $session;
$vals = split( "&", $ts );
while( list($key,$val) = each($vals) ) {
list( $name, $wert ) = split( "=", $val );
if( $val ) eval( "$$name = "$wert";" );
}
}
# ----------------------------------------------- ------------
# session_read() - Get data from the SESSION table and convert it into a session array
# Parameters...: None
# Return value.... ..: If the data is read, return true, otherwise return false
#Note...: The str2arr() function is used
# -------------- -----------------------------------------------
function session_read()
{
# Hash array to keep session-variables
global $session;
global $sess_sid, $sess_db, $sess_table, $sess_error;
$sel = "Select val from $sess_table where sid = '$sess_sid'";
$ res = mysql_db_query( $sess_db, $sel );
if( mysql_numrows( $res ) ) {
$val = mysql_result( $res, 0, "val" );
str2arr( $val );
mysql_free_result( $res ) ;
return( true );
}
else {
return( false );
$sess_error = mysql_error();
}
}
# ------------------ ------------------------------------
# Split_Array() - Convert session array into string
# Parameters...: Array
# Return value...: String converted from array
#
# Thanks to Rasmus (this person seems to be the inventor of PHP)
# Note: Convert the session array into a string
#For example, session[username]="yourid"
# session[userpass]="12345"
# will be converted into "session[username]=yourid&session[userpass]=12345"
# At the same time, this function takes into account the situation that an element of the array is also data
#This function is designed as a recursive function
# -------------------------- ----------------------------------
function Split_Array( $arr, $a = "", $b = "", $ c = "" )
{
while( list( $key, $val ) = each( $arr ) ) {
if( is_array( $val ) ) {
$ts .= Split_Array( $arr[ $key ],
( strlen( $a ) ? $a : $key ),
( strlen( $b ) ? $b : ( strlen( $a ) ? $key : "" ) ),
( strlen( $c ) ? $ c : ( strlen( $b ) ? $key : "" ) ) );
}
else {
$ts .= "session";
$ts .= $a ? "[$a]" : "";
$ts .= $b ? "[$b]" : "";
$ts .= $c ? "[$c]" : "";
$ts .= "[$key]=$val&" ;
}
}
return( $ts );
}
# ---------------------------------- ------------------
# session_write - Convert the session array into a string and store it in the session table
# Parameters.: None
# Return value...: If Returns true if the deposit is normal, otherwise returns false
# --------------------------------------------- ------------
function session_write()
{
# Hash array to keep session-variables
global $session;
global $sess_sid, $sess_db, $sess_table;
global $sess_error;
# if you like to delete a session-cookie
# you must check it before writting the session
# array
if( !$sess_sid ) { session_checkid( 0 ); }
$ts = Split_Array( $session );
if( $ts > "" ) { $ts = substr( $ts, 0, strlen( $ts ) - 1 ); }
$res = mysql_db_query( $sess_db, "Select * from session where sid = '$sess_s'" );
if( mysql_numrows( $res ) == 0 ) {
$sel = "Insert into $sess_table ( id, sid, val, times ) ";
$sel .= "values( 0, '$sess_sid', '$ts', NULL )";
}
else {
$sel = "Update $sess_table set val = '$ts', ";
$sel .= "times = NULL where sid = '$sess_sid'";
}
if( !mysql_db_query( $sess_db, $sel ) ) {
$sess_error = mysql_error();
return( false );
}
else { return( true ); }
}
#---------------------------------------------
# session_del - Clear all current sessions
# and delete records related to the current session in the session table
# Parameters....: a random session id
# Return value...: None
# ------ ---------------------------------------
function session_del()
{
global $session , $sess_db, $sess_table, $sess_sid;
$sel = "Delete from $sess_table where sid = '$sess_sid'";
if( !mysql_db_query( $sess_db, $sel ) ) {
$sess_error = mysql_error();
}
$sess_sid = '';
}
}
?>
Original author: Unknown

The above has introduced the function of implementing SESSION in PHP3 (1), including aspects of it. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn