Archive for June, 2005

PHP Session Configuration&Use

Monday, June 13th, 2005

写于2005年6月13日

php.ini中有关session的一些设定会影响到session函数的使用,所以我们先整体了解一下php.ini中有关session的设定。
以php5版本为例

;处理session存取的模式(预设:files)
session.save_handler = files

;session档案存放路径(预设:/tmp)
session.save_path = /tmp

;session使用cookie的功能(预设:启动 1)
session.use_cookies = 1

;session的名字(预设:PHPSESSID)
session.name = PHPSESSID

;自动启动(预设:关 0,此处可以改为1)
session.auto_start = 0

;session使用cookie的生存期,以秒为单位(预设:随浏览器关闭而消失 0)
session.cookie_lifetime = 0

;session使用cookie的路径(预设:与domian相同或根路径 /)
session.cookie_path = /

;session使用cookie的域名称(预设:空)
session.cookie_domain =

;处理连续资料的方式,本功能只有WDDX模组或PHP内部使用(预设:php)
session.serialize_handler = php

;按千分之一的比率进行垃圾收集
;垃圾收集的处理几率(预设:1)
session.gc_probability = 1
;设置进程比率,(php5新增参数,预设:1000)
session.gc_divisor = 1000

;(垃圾收集)被处理前的生存期(预设:1440[秒])
session.gc_maxlifetime = 1440

;PHP 4.2和以前的版本都有个BUG,即使你禁止了”允许注册全局变量”.仍然可以让你在全局变量范围中初始化一个SESSION的值
;PHP 4.3 和以后的版本会发出相应的警告,你可以禁止警告.PHP5中,只有你打开了bug_compat_42(=ON),警告才会显示.
session.bug_compat_42,0
session.bug_compat_warn = 1

;session在重新整理时检查session是否还存在(预设:空)
session.referer_check =

;特别设定session值的长度(预设:关)
session.entropy_length = 0

;特别设定session值的文件
session.entropy_file =

;使用cache限制器(预设:不要cache)
session.cache_limiter = nocache

;使用cache的生存期
session.cache_expire = 180

;使用sid值(session_id)传送模式(基于安全,预设:关)
session.use_trans_sid = 0

;选择一个HASH函数,0为MD5(128比特强度),1为SHA-1(160比特强度)
session.hash_function = 0

;定义当转换2进制hash数据为一些可读的数据时,每个字符存储多少个比特.
;4 比特: 0-9, a-f
;5 比特: 0-9, a-v
;6 比特: 0-9, a-z, A-Z, “-”, “,”
session.hash_bits_per_character = 5

;URL重指向的标签
url_rewriter.tags = “a=href,area=href,frame=src,input=src,form=fakeentry”

对以上设置进行修改以后应该重启Apache服务器,以加载以上的修改。

在使用session时一般也就是以下几个步骤:
1.启动session,使用session_start()函数;
如果使用的状态是cookie base的session传递方式,之后程式的开头都必须使用session_start()函数,而且一定要放在页面开头,之前不能有任何结果输出(比如:echo输出或者html)
如果在php.ini的设置中session.use_trans_sid = 1,点击页面上的连接可以正常传值到第二页,网址会自动加上(举例)[?PHPSESSID=8234c3f661bd1eac450c23d5650e0881]
如果在php.ini的设置中session.use_trans_sid = 0,需要使用URL的方式传递session id,[SID]是php在启动session后自动产生的变量,可以在URL中使用,如:第二页(URLs)
传递过来的第二页也要先启动session,调用session_start()函数。

2.注册session,不推荐使用session_register()函数,使用$_SESSION[]来注册;
需要先调用session_start()函数,使用$_SESSION["session_name"] = “session_value”;的方式注册session

3.清楚session,使用session_destroy()函数
结束session,同时删除session文件,需要事先调用过session_start()

4.取得session的id,使用session_id()函数

5.查看session是否已被注册,使用session_is_registered()函数

下面再将跟session有关的函数罗列一下,用到自己查php手册即可
session_cache_expire ;得到目前cache的存活时间
session_cache_limiter ;得到或设计目前cache的限制器
session_decode ;从某一字符串进行session资料的解码
session_destroy ;注销一个session
session_encode ;把session字符串进行编码
session_id ;得到或设定目前的session id
session_is_registered ;检测session是否已经建立
session_module_name ;取得或设定目前session的组能
session_name ;取得或设定目前session的名称(预设:PHPSESSID)
session_regenerate_id ;更新当前的session id
session_register ;注册session
session_save_path ;得到或设定目前session文件的存储路径
session_start ;启动session
session_unregister ;注销某个指定的session
session_unset ;释放所有session里的资料
session_write_close ;写入session资料并结束session功能
session_set_save_handler;设定使用者session的存储方式
session_get_cookie_params ;取得session在cookie的参数
session_set_cookie_params ;设定session在cookie的参数

php5下使用MySql

Wednesday, June 8th, 2005

写于2005年6月8日

将mysql安装到指定目录,如我的是d:/mysql 如下载的是非安装的mysql压缩包,直接解压到指定目录就可以了
然后点击D:\mysql\bin\winmysqladmin.exe这个文件 其中D:\mysql是你的mysql安装目录
输入winmysqladmin的初始用户、密码 (注:这不是mysql里的用户、密码)随便填不必在意
确定之后你的右下角任务的启动栏会出现一个红绿灯的图标,红灯亮代表服务停止,绿灯亮代表服务正常,左击这个图标->winnt->install the service 安装此服务
再左击这个图标->winnt->start the service 启动mysql服务

(以下部分可以不进行,默认密码为空)
修改mysql数据库的root密码
用cmd进入命今行模式输入如下命令: ( 注: d:\mysql 为mysql安装目录)
cd d:\mysql\bin
mysqladmin -u root -p password 123456
回车出现
Enter password: ( 注:这是叫你输入原密码. 刚安装时密码为空,所以直接回车即可)
此时mysql 中账号 root 的密码 被改为 123456 安装完毕

配置php.ini并测试mysql
找到extension_dir = “./” 改为 extension_dir = “d:/php5/ext”
找到;extension=php_mysql.dll
将’;'去掉改为
extension=php_mysql.dll

找到;session.save_path = “/tmp”
将’;'去掉 设置你保存session的目录,如
session.save_path = “D:/php5/session_temp”;

重启apache服务
在Web根目录下建立testdb.php文件内容如下:
$link=mysql_connect(’localhost’,'root’,'123456′);
if(!$link) echo “fail”;
else echo “success”;
mysql_close();
?>
用浏览器打开http://localhost:8080/testdb.php 如果输出success就OK了

Apache2+php5 for Win Configuration

Wednesday, June 8th, 2005

写于2005年6月8日

帮同学修改毕设,一个php的网站。
正好一直想了解一下php,总是犯懒,迟迟没有动手,正好借此机会学习一下。
君欲擅其事,必先利其器。首先就是php的环境配置,这方面的文章太多,我只是记录一下自己的配置过程。

1.下载Apache2安装版apache_2.0.54-win32-x86-no_ssl.msi
URL:http://httpd.apache.org/

由于平时还要经常用IIS+ASP开发网站,所以安装的我选择了手动启动Apache服务,在8080端口侦听(80端口已被IIS占用),如果不用IIS的,就将Apache作为服务直接加载到系统就可以了,用的是默认的80端口

2.下载php5,我下载的是zip版本,比安装版用起来自由些
URL:http://www.php.net

将zip解压到d:\php5,

将php5目录下的php.ini-recommended改名为php.ini,复制到c:\windows下面(此处也可以将php.ini-dist改名为php.ini复制,只是具体的php配置不同,两个文件大小差4K,没有细看内容),

将php5目录下的php5ts.dll,libmysql.dll两个文件复制到c:\windows\system下,

3.配置apache里的httpd.conf
打开Apache安装目录下conf\httpd.conf文件,

找到 DocumentRoot “D:/Program Files/Apache Group/Apache2/htdocs” 将其改为你的WEB目录(可不改),我改为了 DocumentRoot “D:/htdocs”,

找到 DirectoryIndex index.html index.html.var 在后面加入 index.htm index.php default.php default.htm,

模块化安装配置
找到 #LoadModule ssl_module modules/mod_ssl.so 这行,
在此行后加入一行LoadModule php5_module d:/php5/php5apache2.dll
找到 AddType application/x-gzip .gz .tgz 这行,
在此行后加入一行AddType application/x-httpd-php .php

此时Apache+php的环境配置完成,
在web目录(d:\htdocs)下建立test.php,并编辑文件内容,
启动Apache服务(bin/apache.exe),出现Start Apache Console控制窗口,
打开浏览器,输入http://localhost:8080/test.php,应该可以显示出php的版本信息。