当服务器创建一个会话(session_start()),服务器将指定文件夹下的服务器创建一个会话文件,它的名字是Session ID,并将其发送到浏览器的cookie的值。浏览器将cookie每次访问服务器,与服务器将确定的改变SessionID和找到相应的会话文件。多个键值对存储在这个文件中。由会议文件存储的文件夹可以在配置文件中的PHP修改INI。
Cookie验证每个请求页。如果用户信息存储在数据库中,每次都会执行数据库查询,这将给数据库带来不必要的负担,cookie可以修改,因此安全系数太低。
会话的会话存储在服务器端的,相对安全的,而不是像饼干,其中有一个存储长度限制。由于会话存储在服务器端,以文本文件的形式,它不是怕客户修改会话内容。事实上,在会话文件在服务器端,PHP自动修改会议文件的权限。它只保留了系统的读写权限,不能用ftp修改,因此更安全。
对于曲奇,如果我们想验证用户是否登陆,我们必须保存cookie中的用户名和密码(可能是在MD5加密之后),并在每个请求页面验证它。
如果用户名和密码存储在数据库中,每次都执行数据库查询,造成数据库上的冗余负担,因为我们不能只做一次验证。为什么
因为客户机cookie中的信息是可以修改的。如果您存储$管理变量来指示用户是否登录,则$ admin表示在true时登陆,当它为false时未注册。在第一次验证之后,admin等于true存储在cookie中,下一次它将不会被验证,对吗如果有人伪造一个真正的管理变量值,那么它是否是对管理权限的直接访问这很不安全。
但会议不同的是,会话存储在服务器,远程用户不能修改会议文件的内容,所以我们只能存储$admin变量来确定是否为第一次登陆,管理员通过设置美元真实验证后的价值判断后是不是真的,如果不到登陆界面,这可以减少数据库操作的次数。
而且它可以减少每次验证cookie时传递密码的不安全性。(会话验证只需要传递一次,如果您不使用SSL安全协议),即使口令用MD5加密,也很容易被截获。
会议会议将创建一个访问者打开的会话的会话识别用户唯一的会话ID,会话ID可以被存储在用户的计算机的cookie,并可以通过URL。相应的特定会话的值将被存储在服务器端,这是从饼干的主要差异和相对安全的。
创建会话
创建会话或返回现有会话,你必须使用session_start()函数来打开一个会话的会话,并且系统会分配一个会话ID:
< PHP
(session_start); / /这个函数没有参数,返回值是正确的。最好把这个功能,首先,你不能在有任何输出,或者你会打电话报警。
>
注册会话变量
使用session_register()函数来登记一个session变量并返回到真正的成功,否则返回false。
语法:bool session_register(混合名称{,混合…})
使用session_register()函数,一个或多个全局会话变量可以被当前会话下注册。参数名为变量的名称,你想加入,并成功返回逻辑值TRUE。值或值可用于_session {姓名}美元或美元的形式http_session_vars {姓名}。
实例uff1a
< PHP
session_start();
为用户名=不停;
session_register(用户名);
>
在这个例子中,我们已经注册了一个名为用户名和价值不停的会议。
读取会话
内置_session美元变量PHP可以很容易地访问会话变量集。
实例uff1a
< PHP
session_start();
回声注册用户名:。_session美元{用户名}; / /输出注册用户名:不停
>
销毁会话
session_unregister()取消一个会话变量
撤消($ _session {年龄});用于注销会话变量$ _session {年龄注册}
session_unset()删除所有注册变量
session_destroy()取消所有的会话变量和取消整个会话的会话
实例uff1a
< PHP
session_start();
session_unregister(用户名);一个变量 / /会议取消
session_unset(会话); / /注销会话
>
检查变量是否注册为会话变量。
session_is_registered
语法:boobean session_is_registered(String name);
此函数检查指定变量是否在当前会话中注册,参数名是要检查的变量名。
实例uff1a
< PHP
session_start();
如果(!session_is_registered(性别)){ / /确定当前会话变量注册
session_register(性别); / /登记变量
}
美元=女人;
echo $ _session {}; / /女
>
访问当前会话名称
session_name
语法:布尔session_name(字符串{姓名});
此函数可以获取或重新配置当前会话的名称。如果参数名不是参数,则获得当前会话名称,并将参数设置为会话名称作为参数名称。
实例uff1a
< PHP
$ sessionname = session_name(会话); / /获取当前的名称,默认为PHPSESSID
美元美元美元_get SessionID = { sessionname }; / /会话ID
session_id($ SessionID); / / session_id(会话ID)得到
>
访问当前会话标识号
session_id
语法:布尔session_id(字符串{id});
此函数获取或重置当前会话的标识号。如果没有参数id,则意味着只获得当前会话的标识号,并添加参数以将会话的标识号设置为新指定的ID。
设置会话的生命周期
setcookie:发送一个HTTP Cookie的客户端。
< PHP
session_start
保存一天
生命周期= 24 * 3600;
setcookie(session_name(),(),()session_id时间+ $一生, / );
>
session_set_cookie_params:设置会话的生命周期,必须在session_start电话叫()函数。
如果客户端使用IE 6,session_set_cookie_params(),将有功能设置cookie的一些问题,所以我们还是叫setcookie功能手动创建Cookie。
保存一天
< PHP
生命周期= 24 * 3600;
session_set_cookie_params($一生);
session_start();
_session美元{admin=真;
>
设置会话文件的保存路径
session_save_path():必须在session_start叫()函数调用。
< PHP
设置一个目录
为保存路径= 。 / / session_save_dir;
保存一天
生命周期= 24 * 3600;
session_save_path($保存路径);
session_set_cookie_params($一生);
session_start();
_session美元{admin=真;
>
< PHP
session_start(会话); / /开始
用户名为'nostop美元;
session_register('username '); / /注册一个名为用户名
注册用户:回声。_session美元{ 'username}; / /注册用户:不停的阅读会话变量
_session美元{年龄} = 23; / /声明一个变量为年龄、和分配
回声的年龄:年龄。_session美元{ }; / /年龄:23
session_unregister('username ');会话变量 / /取消
echo $ _session { 'username}; / /空
echo $ _session {年龄}; / / 23
撤消($ _session {年龄});会话变量 / /取消
注册用户:回声。_session美元{ 'username}; / /空
回声的年龄:年龄。_session美元{ }; / /空
>