PHP 把 session 写入mysql怎么写啊(要代码啊)!网上一所搜,多到是多。就是都不管用。唉!
请高手把可以用的源码发上来。不要复制,复制都都有问题,都不可以用。最好可以亲自测试一下哈!!嘿嘿,。
----
成功了。在追加200分!
请高手把可以用的源码发上来。不要复制,复制都都有问题,都不可以用。最好可以亲自测试一下哈!!嘿嘿,。
----
成功了。在追加200分!
解决方案 »
- window2003服务器下配置getcwd()函数的取值是错误的?(着急)
- 谁能给我说说个学PHP和MySQL的教程网
- 问个简单的问题?
- unix系统下架设的php服务器和windows下架设的php服务器,有什么不同?
- 这个inc是什么意思
- 官方下的dedecms 后台登陆不了
- 求本入门书 《php 语言精粹 Peter B.MacIntyre》pdf
- 关于PHP的MCRYPT的解密问题
- 菜鸟的对未来的困惑,请各位高人指点迷津!
- ┄┄┄┄┄┄┄ 仍然是编码问题```` 简单问题```` 鬼魅问题````
- < a href="b.php?title=log1" title='log1' > 显示log1 </a>
- 百度知道正则表达试,怎样写?
`id` varchar(32) NOT NULL,
`time` int(10) NOT NULL,
`timenow` int(10) NOT NULL,
`data` text NOT NULL,
`ip` varchar(15) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; session.class.php
[php]
<?php
class session
{
public $db;
public $maxtime=600;
function __construct()
{
session_set_save_handler(array(&$this, 'openSession'),
array(&$this, 'closeSession'),
array(&$this, 'readSession'),
array(&$this, 'writeSession'),
array(&$this, 'destroySession'),
array(&$this, 'gcSession'));
session_name('test');
session_cache_limiter('private, must-revalidate');
session_start();
} function openSession()
{
global $db;
$this->db=$db;
//下面的代码是因为当在window环境下.老是不进行gcSession操作,所以干脆写到把清除失效session放到open里
$time=time()-$this->maxtime;
$this->db->del("delete from `session` where `timenow`<'$time'");
return true;
}
function closeSession()
{
unset($this->db);
return true;
}
function readSession($id)
{
if($session=$this->db->getfirst("select * from `session` where `id`='$id'")){
return $session;
}else{
return '';
}
}
function writeSession($id,$data)
{
$ip=getip();
$time=time();
if($session=$this->db->getfirst("select `id` from `session` where `id`='$id'")){
$this->db->update("update `session` set `data`='$data',`ip`='$ip',`timenow`='$time' where `id`='$id' ");
return true;
}else{
$this->db->insert("insert into `session` (`id`,`data`,`ip`,`time`,`timenow`) values ('$id','$data','$ip','$time','$time')");
return true;
}
}
function destroySession($id) {
if($this->db->del("delete from `session` where `id`='$id'")){
return true;
}else{
return false;
}
} function gcSession($maxlifetime)
{
$time=time()+$this->maxtime;
if($this->db->del("delete from `session` where `nowtime`<'$time'")){
return true;
}else{
return false;
}
}
}
require_once('db_class.php');
$db_username="root";
$db_password="root";
$db_database="chat";
$db_hostname="192.168.0.17";
$db=new dbClass($db_username,$db_password,$db_database,$db_hostname);
$db->connect();
$db->select();
mysql_query("set names 'utf8'") ;
$session=new session(); //使用方法,在需要用到session的页面第一行直接require一下就行了
?>
[/php] db_class.php
[php] <?php
class dbClass{ //开始数据库类
var $username;
var $password;
var $database;
var $hostname;
var $result;
function dbClass($username,$password,$database,$hostname){
$this->username=$username;
$this->password=$password;
$this->database=$database;
$this->hostname=$hostname;
}
function connect(){ //这个函数用于连接数据库
$this->link=mysql_connect($this->hostname,$this->username,$this->password) or die("Sorry,can not connect to database");
return $this->link;
}
function select(){ //这个函数用于选择数据库
mysql_select_db($this->database,$this->link);
}
function query($sql){ //这个函数用于送出查询语句并返回结果,常用。
if($this->result=mysql_query($sql,$this->link)) return $this->result;
else {
//这里是显示SQL语句的错误信息,主要是设计阶段用于提示。正式运行阶段可将下面这句注释掉。
echo "SQL语句错误: <font color=red>$sql</font> <BR><BR>错误信息: ".mysql_error();
return false;
}
}
/*
以下函数用于从结果取回数组,一般与 while()循环、$db->query($sql) 配合使用,例如:
$result=$db->query("select * from xzy_teachfl order by tpx");
while($row=$db->getarray($result)){
echo "$row[id] ";
}
*/
function getarray($result){
return @mysql_fetch_array($result);
}
function getarray2($result){
return @mysql_fetch_array($result,MYSQL_ASSOC);
}
/*
以下函数用于取得SQL查询的第一行,一般用于查询符合条件的行是否存在,例如:
用户从表单提交的用户名$username、密码$password是否在用户表“user”中,并返回其相应的数组:
if($user=$db->getfirst("select * from user where username='$username' and password='$password' "))
echo "欢迎 $username ,您的ID是 $user[id] 。";
else
echo "用户名或密码错误!";
*/
function getfirst($sql){
return @mysql_fetch_array($this->query($sql));
}
/*
以下函数返回符合查询条件的总行数,例如用于分页的计算等要用到,例如:
$totlerows=$db->getcount("select * from mytable");
echo "共有 $totlerows 条信息。";
*/
function getcount($sql){
return @mysql_num_rows($this->query($sql));
}
/*
以下函数用于更新数据库,例如用户更改密码:
$db->update("update user set password='$new_password' where userid='$userid' ");
*/
function update($sql){
return $this->query($sql);
}
/*
以下函数用于向数据库插入一行,例如添加一个用户:
$db->insert("insert into user (userid,username,password) values (null,'$username','$password')");
*/
function insert($sql){
return $this->query($sql);
}
//$db->del("delete from admin where user='".$user."'");
function del($sql){
return $this->query($sql);
}
function getid(){ //这个函数用于取得刚插入行的id
return mysql_insert_id();
}
}
/*
主要函数就是这些,如果你自己有另外的需要,也可以自己添加上去。
因为凡使用该类的都必须连接数据库,下面就连接并选择好数据库吧:
*/
?>
$SESS_DBHOST = "localhost"; /* database server hostname */
$SESS_DBNAME = "test"; /* database name */
$SESS_DBUSER = "root"; /* database user */
$SESS_DBPASS = "root"; /* 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'";
$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 = "SELECT * FROM `sessions` WHERE sesskey = '$key'";//查找是否有记录
$qid = mysql_query($qry, $SESS_DBH) or die("query Error."); //结果
if (mysql_num_rows($qid) > 0) {//有记录则更新
$qry = "UPDATE sessions SET expiry = $expiry, value = '$value' WHERE sesskey = '$key' ";
$qid = mysql_query($qry, $SESS_DBH);
}
else{//无记录插入
$qry = "INSERT INTO sessions VALUES ('$key', $expiry, '$value')";
$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"); session_start();
$_SESSION['sample'] = 'esss';