各位好,没人回复 就我来吧!
下面共三个文件:
test1.php 注册了三个变量
<?
require("session_mysql.php");//注意:一定要在session_start() 之前调用,否则 后果自负
session_start(); // 开始session
$a11="1";
$a12="2";
$a13="3";
session_register("a11");
session_register("a12");
session_register("a13");
echo $a11,$a12,$a13;?>test2.php 输出 并追加新值
<?include("session_mysql.php");
session_start();
echo $a11," ",$a12," ",$a13;
if(!session_is_registered("baaa4")) { // 如果不存在则新建
$baaa4="新值";
session_register("baaa4");//追加一个变量 }
else
echo "<br> \$baaa4 已经存在"; ?>
//session_mysql.php 被调用函数,自己改变其中的连接信息
建表:
CREATE TABLE sessions (
sesskey char(32) not null,
expiry int(11) unsigned not null,
value text not null,
PRIMARY KEY (sesskey)
); <?
$SESS_DBHOST = "localhost"; /* database server hostname */
$SESS_DBNAME = "sessions"; /* database name */
$SESS_DBUSER = "ck"; /* database user */
$SESS_DBPASS = "ok"; /* database password */$SESS_DBH = "sessions";
$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);
if(!$qid) {echo "djfdjf";}
}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");
?>
下面共三个文件:
test1.php 注册了三个变量
<?
require("session_mysql.php");//注意:一定要在session_start() 之前调用,否则 后果自负
session_start(); // 开始session
$a11="1";
$a12="2";
$a13="3";
session_register("a11");
session_register("a12");
session_register("a13");
echo $a11,$a12,$a13;?>test2.php 输出 并追加新值
<?include("session_mysql.php");
session_start();
echo $a11," ",$a12," ",$a13;
if(!session_is_registered("baaa4")) { // 如果不存在则新建
$baaa4="新值";
session_register("baaa4");//追加一个变量 }
else
echo "<br> \$baaa4 已经存在"; ?>
//session_mysql.php 被调用函数,自己改变其中的连接信息
建表:
CREATE TABLE sessions (
sesskey char(32) not null,
expiry int(11) unsigned not null,
value text not null,
PRIMARY KEY (sesskey)
); <?
$SESS_DBHOST = "localhost"; /* database server hostname */
$SESS_DBNAME = "sessions"; /* database name */
$SESS_DBUSER = "ck"; /* database user */
$SESS_DBPASS = "ok"; /* database password */$SESS_DBH = "sessions";
$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);
if(!$qid) {echo "djfdjf";}
}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");
?>
/* ------------------------------------------------------------------------
* session_dbm.php
* ------------------------------------------------------------------------
* PHP4 DBM Session Handler
* Version 1.00
* by Ying Zhang ([email protected])
* 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 <[email protected]>.
*
* ------------------------------------------------------------------------
* DESCRIPTION:
* ------------------------------------------------------------------------
* This library tells the PHP4 session handler to write to a DBM file
* instead of creating individual files for each session.
*
* ------------------------------------------------------------------------
* INSTALLATION:
* ------------------------------------------------------------------------
* Make sure you have DBM support compiled into PHP4. Then copy this
* script to a directory that is accessible by the rest of your PHP
* scripts.
*确信你的php4有DBM支持。拷贝这个文件在你的php脚本目录。
* ------------------------------------------------------------------------
* USAGE:
* ------------------------------------------------------------------------
* Include this file in your scripts before you call session_start(), you
* don't have to do anything special after that.
* 在调用session_start()之前请包含这个文件。之后就不需要作什么工作了。
*/ $SESS_DBM = "";
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime"); function sess_open($save_path, $session_name) {
global $SESS_DBM; $SESS_DBM = dbmopen("$save_path/$session_name", "c");
return ($SESS_DBM);
} function sess_close() {
global $SESS_DBM; dbmclose($SESS_DBM);
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");
?>