php中session和cookie
2020-12-13 05:26
标签:des c tar http a get cookie
每次请求页面的时候进行验证,如果用户信息存储在数据库中,每次都要执行一次数据库查询,给数据库造成多余的负担。cookie可以被修改的,所以安全系数太低。 session是存储在服务器端面的会话,相对安全,并且不像Cookie那样有存储长度限制。由于Session是以文本文件形式存储在服务器端的,所以不怕客户端修改 对于
Cookie 来说,假设我们要验证用户是否登陆,就必须在 Cookie 中保存用户名和密码(可能是 md5
加密后字符串),并在每次请求页面的时候进行验证。 而 Session 就不同了,Session
是存储在服务器端的,远程用户没办法修改 Session 文件的内容,因此我们可以单纯存储一个 $admin
变量来判断是否登陆, session 会话会为每一个开启了 session 会话的访问者建立一个唯一的会话 ID
,用于识别用户。该会话 ID 可能存储于用户电脑的 cookie 内, 创建
session 要创建 session 或返回已经存在的会话 ,就必须先使用
session_start() 函数开启一个 session 会话,系统会分配一个会话
ID: 注册session变量 使用
session_register() 函数注册一个 session 变量,成功返回 TRUE ,否则返回 FALSE
。 语法:bool session_register( mixed name [, mixed ...]
) 使用 session_register() 函数可以在目前会话下注册一个或多个全局 session 变量。
参数name就是想要加入的变量名,成功则返回逻辑值true。可以用$_SESSION[name]或$HTTP_SESSION_VARS[name]的形式来取值或赋值。 例子: 在该例子中,我们向
session 注册了一个名为 username 的变量,其值为 nostop 。 读取
session PHP 内置的 $_SESSION 变量可以很方便的访问设置的 session
变量。 例子: 销毁
session session_unregister() 注销单个
session 变量 例子: session_is_registered 语法:boobean
session_is_registered(string
name); 这个函数可检查当前的session之中是否已有指定的变量注册,参数name就是要检查的变量名。成功则返回逻辑值true。 例子: session_name 语法:boolean
session_name(string
[name]); 这个函数可取得或重新设置当前session的名称。若无参数name则表示获取当前session名称,加上参数则表示将session名称设为参数name。 例子: $sessionName
= session_name(); //取得当前 Session
名,默认为 PHPSESSID 存取当前会话标识号 session_id 语法:boolean
session_id(string
[id]); 这个函数可取得或重新设置当前存放session的标识号。若无参数id则表示只获取当前session的标识号,加上参数则表示将session的标识号设成新指定的id。 设置
Session 的生存期 setcookie:向客户端发送一个 HTTP
cookie。 session_set_cookie_params:设置
Session 的生存期的,该函数必须在 session_start() 函数调用之前调用。 //
保存一天 设置 Session
文件的保存路径 session_save_path() :必须在 session_start()
函数调用之前调用。 $_SESSION[‘age‘]=23; //声明一个名为age的变量,并赋值 session_unregister(‘username‘);
//注销Session变量 unset($_SESSION[‘age‘]);
//注销Session变量 php中session和cookie,搜素材,soscw.com php中session和cookie 标签:des c tar http a get 原文地址:http://www.cnblogs.com/RBBiog/p/3736886.html
Session内容。实际上在服务器端的Session文件,PHP自动修改session文件的权限,只保留了系统读和写权限,而且不能通过ftp修改,所以安全得多。
如果用户名和密码存储在数据库,每次都要执行一次数据库查询,给数据库造成多余的负担。因为我们并不能
只做一次验证。为什么呢?
因为客户端 Cookie 中的信息是有可能被修改的。假如你存储 $admin
变量来表示用户是否登陆,$admin 为 true 的时候表示登陆,
为 false 的时候表示未登录,在第一次通过验证后将
$admin 等于 true 存储在 Cookie,下次就不用验证了,这样对么?错了,
假如有人伪造一个值为 true 的
$admin 变量那不是就立即取的了管理权限么?非常的不安全。
首次验证通过后设置 $admin 值为 true,以后判断该值是否为
true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。
而且可以减少每次为了验证 Cookie
而传递密码的不安全性了(Session 验证只需要传递一次,假如你没有使用 SSL 安全协议的话)。
即使密码进行了 md5
加密,也是很容易被截获的。
也可能通过 URL 来传递。而对应的具体 session
值会存储于服务器端,这也是与 cookie 的主要区别,并且安全性相对较高。
session_start();//此函数没有参数,且返回值均为true。最好将这个函数置于最先,而且在它之前不能有任何输出,否则会报警
?>
session_start();
$username
=
"nostop";
session_register("username");
?>
session_start();
echo
"登记的用户名为:".$_SESSION["username"]; //输出
登记的用户名为:nostop
?>
unset($_SESSION[‘age‘]);
用于注销以$_SESSION[‘age‘]注册的session变量
session_unset() 删除所有已注册的变量
session_destroy()
注销所有的session变量,并注销整个 session
会话
session_start();
session_unregister("username"); //注销
session
某个变量
session_unset(); //注销
session
会话
?>
检查变量是否被登记为会话变量
session_start();
if(!session_is_registered("gender")){
//判断当前会话变量是否注册
session_register("gender"); //注册变量
}
$gender="女";
echo
$_SESSION[‘gender‘]; //女
?>
存取当前会话名称
$sessionID =
$_GET[$sessionName]; //取得 Session
ID
session_id($sessionID); //使用
session_id() 设置获得的 Session
ID
?>
session_start
//
保存一天
$lifeTime
= 24 *
3600;
setcookie(session_name(),
session_id(), time() + $lifeTime,
"/");
?>
如果客户端使用 IE 6.0 ,
session_set_cookie_params(); 函数设置 Cookie 会有些问题,所以我们还是手动调用 setcookie 函数来创建
cookie。
$lifeTime = 24 *
3600;
session_set_cookie_params($lifeTime);
session_start();
$_session["admin"]
= true;
?>
//
设置一个存放目录
$savePath =
"./session_save_dir/";
// 保存一天
$lifeTime =
24 *
3600;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
$_session["admin"]
=
true;
?>
session_start(); //启动Session
$username=‘nostop‘;
session_register(‘username‘); //注册一个名为username变量
echo
‘登记的用户:‘.$_SESSION[‘username‘]; //登记的用户:nostop 读取Session变量
echo
‘年龄:‘.$_SESSION[‘age‘];
//年龄:23
echo
$_SESSION[‘username‘]; //空
echo
$_SESSION[‘age‘];//23
echo ‘登记的用户:‘.$_SESSION[‘username‘];
//空
echo ‘年龄:‘.$_SESSION[‘age‘];
//空
?>
上一篇:Windows远程桌面使用大招儿