电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > PHP教程 > 正文
PHP4的session功能
PHP4的session功能
2005-12-30 19:26:02  文/45IT收集   出处:电脑软硬件应用网   
sp;

return true; 


function sess_read($key) { 

global $SESS_DBM, $SESS_LIFE; 


$var = ""; 

if ($tmp = dbmfetch($SESS_DBM, $key)) { 

$expires_at = substr($tmp, 0, strpos($tmp, "|")); 


if ($expires_at > time()) { 

$var = substr($tmp, strpos($tmp, "|") + 1); 


return $var; 


function sess_write($key, $val) { 

global $SESS_DBM, $SESS_LIFE; 


dbmreplace($SESS_DBM, $key, time() + $SESS_LIFE . "|" . $val); 

return true; 


function sess_destroy($key) { 

global $SESS_DBM; 


dbmdelete($SESS_DBM, $key); 

return true; 


function sess_gc($maxlifetime) { 

global $SESS_DBM; 


$now = time(); 

$key = dbmfirstkey($SESS_DBM); 

while ($key) { 

if ($tmp = dbmfetch($SESS_DBM, $key)) { 

$expires_at = substr($tmp, 0, strpos($tmp, "|")); 

if ($now > $expires_at) { 

sess_destroy($key); 


$key = dbmnextkey($SESS_DBM, $key); 


session_set_save_handler( 

"sess_open", 

"sess_close", 

"sess_read", 

"sess_write", 

"sess_destroy", 

"sess_gc"); 

?> 

======================================= 

session_mysql.php 

======================================= 

<? 

/* ------------------------------------------------------------------------ 

* session_mysql.php 

* ------------------------------------------------------------------------ 

* PHP4 MySQL Session Handler 

* Version 1.00 

* by Ying Zhang (ying@zippydesign.com) 

* Last Modified: May 21 2000 

* ------------------------------------------------------------------------ 

* TERMS OF USAGE: 

* ------------------------------------------------------------------------ 

* You are free to use this library in any way you want, no warranties are 

* expressed or implied. This works for me, but I don't guarantee that it 

* works for you, USE AT YOUR OWN RISK. 

* While not required to do so, I would appreciate it if you would retain 

* this header information. If you make any modifications or improvements, 

* please send them via email to Ying Zhang <ying@zippydesign.com>. 

* ------------------------------------------------------------------------ 

* DESCRIPTION: 

* ------------------------------------------------------------------------ 

* This library tells the PHP4 session handler to write to a MySQL database 

* instead of creating individual files for each session. 

* Create a new database in MySQL called "sessions" like so: 

* CREATE TABLE sessions ( 

* sesskey char(32) not null, 

* expiry int(11) unsigned not null, 

* value text not null, 

* PRIMARY KEY (sesskey) 

* ); 

* ------------------------------------------------------------------------ 

* INSTALLATION: 

* ------------------------------------------------------------------------ 

* Make sure you have MySQL support compiled into PHP4. Then copy this 

* script to a directory that is accessible by the rest of your PHP 

* scripts. 

* ------------------------------------------------------------------------ 

* USAGE: 

* ------------------------------------------------------------------------ 

* Include this file in your scripts before you call session_start(), you 

* don't have to do anything special after that. 

*/ 


$SESS_DBHOST = "localhost"; /* database server hostname */ 

$SESS_DBNAME = "sessions"; /* database name */ 

$SESS_DBUSER = "phpsession"; /* database user */ 

$SESS_DBPASS = "phpsession"; /* database password */ 


$SESS_DBH = ""; 

$SESS_LIFE = get_cfg_var("session.gc_maxlifetime"); 


function sess_open($save_path, $session_name) { 

global $SESS_DBHOST, $SESS_DBNAME, $SESS_DBUSER, $SESS_DBPASS, $SESS_DBH; 


if (! $SESS_DBH = mysql_pconnect($SESS_DBHOST, $SESS_DBUSER, $SESS_DBPASS)) { 

echo "<li>Can't connect to $SESS_DBHOST as $SESS_DBUSER"; 

echo "<li>MySQL Error: ", mysql_error(); 

die; 


if (! mysql_select_db($SESS_DBNAME, $SESS_DBH)) { 

echo "<li>Unable to select database $SESS_DBNAME"; 

die; 


return true; 


function sess_close() { 

return true; 


function sess_read($key) { 

global $SESS_DBH, $SESS_LIFE; 


$qry = "SELECT value FROM sessions WHERE sesskey = '$key' AND expiry > " . time(); 

$qid = mysql_query($qry, $SESS_DBH); 


if (list($value) = mysql_fetch_row($qid)) { 

return $value; 


return false; 


function sess_write($key, $val) { 

global $SESS_DBH, $SESS_LIFE; 


$expiry = time() + $SESS_LIFE; 

$value = addslashes($val); 


$qry = "INSERT INTO sessions VALUES ('$key', $expiry, '$value')"; 

$qid = mysql_query($qry, $SESS_DBH); 


if (! $qid) { 

$qry = "UPDATE sessions SET expiry = $expiry, value = '$value' WHERE sesskey = '$key' AND expiry > " . time(); 

$qid = mysql_query($qry, $SESS_DBH); 


return $qid; 


function sess_destroy($key) { 

global $SESS_DBH; 


$qry = "DELETE FROM sessions WHERE sesskey = '$key'"; 

$qid = mysql_query($qry, $SESS_DBH); 


return $qid; 


function sess_gc($maxlifetime) { 

global $SESS_DBH; 


$qry = "DELETE FROM sessions WHERE expiry < " . time(); 

$qid = mysql_query($qry, $SESS_DBH); 


return mysql_affected_rows($SESS_DBH); 


session_set_save_handler( 

"sess_open", 

"sess_close", 

"sess_read", 

"sess_write", 

"sess_destroy", 

"sess_gc"); 

?> 

========================================================================= 

test.php 

========================================================================== 

<? 

/* ---------------------------------------------

上一页  [1] [2] [3] 下一页

  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    javascript实用技巧点滴(三)
    javascript实用技巧点滴(2)
    javascript实用技巧点滴(1)
    javascript教程 - 第一课 1.1
    用js制作完善的日,月组合下拉框
    利用JSP编程建立动态Web站点
    用PHP制作留言板
    PHP生成动态WAP页面
    PHP实现文件下载
    用PHP制作动态计数器
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号