在PHP3中实现SESSION的功能(一)
作者:水水2502919973 | 来源:互联网 | 2018-03-13 03:16
在PHP3中实现SESSION的功能(一)
SESSION函数库:session.inc.php3 if (!isset($__session_inc__)){ $__session_inc__=1; //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() - 从SESSION表中取数据,转换成session数组 # 参数........: 无 # 返回值......: 如果读出数据,返回 true ,否则返回 false #注意.........: 用到了str2arr()这个函数 # ---------------------------------------------------------- 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() - 将session数组转换成字符串 # 参数.......: 数组 # 返回值.....: 数组转换得来的字符串 # # Thanks to Rasmus (这人好象是PHP的发明人) # 注意:将session数组转换成字符串 #如session[username]="yourid" # session[userpass]="12345" #将会被转换成"session[username]=yourid&session[userpass]=12345" #同时该函数考虑到了数组的某个元素也是数据的情况 #这个函数被设计成一个递归函数 # ------------------------------------------------------ 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 - 将session数组转换成字符串,再存到session表中 # 参数.: 无 # 返回值...: 如果存入正常返回 true ,否则返回 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 - 清除当前所有的session # 并删除session表中和当前session有关的记录 # 参数.....: 一个随机的session id # 返回值...: 无 # --------------------------------------------- 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 = ''; } } ?> 原作者:不详
推荐阅读
本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ...
[详细]
蜡笔小新 2023-12-14 17:15:19
本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ...
[详细]
蜡笔小新 2023-12-14 17:03:58
本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ...
[详细]
蜡笔小新 2023-12-14 15:30:33
本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ...
[详细]
蜡笔小新 2023-12-14 14:06:10
本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ...
[详细]
蜡笔小新 2023-12-14 14:02:42
本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ...
[详细]
蜡笔小新 2023-12-14 12:14:09
在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ...
[详细]
蜡笔小新 2023-12-14 10:57:47
本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ...
[详细]
蜡笔小新 2023-12-14 10:11:46
本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ...
[详细]
蜡笔小新 2023-12-14 08:19:53
本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ...
[详细]
蜡笔小新 2023-12-13 17:48:58
本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ...
[详细]
蜡笔小新 2023-12-13 16:31:57
本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ...
[详细]
蜡笔小新 2023-12-13 13:33:01
原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ...
[详细]
蜡笔小新 2023-12-14 12:39:13
本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ...
[详细]
蜡笔小新 2023-12-14 10:03:27
本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ...
[详细]
蜡笔小新 2023-12-14 03:24:19
水水2502919973
这个家伙很懒,什么也没留下!