我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

在PHP开发中就是存储在服务器端的,比较安全,而且没有那样的存储长度限制,本文简单介绍一下它的使用。

由于是在服务器端以文本文件的形式保存,所以不用担心客户端修改内容。事实上,PHP 会自动在服务器端修改文件权限,只保留系统读写权限,无法通过 FTP 进行修改,所以安全得多。开源社区门户 k%W%e2CY

比如我们要验证用户是否登录,那么就要把用户名和密码(可能是md5加密的字符串)保存在客户端,每次请求页面时都要验证。如果把用户名和密码保存在数据库中,那么每次都要执行一次数据库查询,给数据库带来了不必要的负担。因为我们不能只做一次验证。为什么?因为客户端中的信息可能会被修改。假如存储$admin变量来表示用户是否登录,当代表登录时$admin为true,当代表未登录时为false。第一次验证之后,$admin就等于true,保存在客户端中,下次就不需要验证了,这样对吗?错,如果有人伪造一个值为true的$admin变量,那不是立刻就窃取了管理权限吗?非常不安全。

不一样,它是存放在服务器端的,远程用户是无法修改文件内容的。所以我们可以简单的存放一个$admin变量,用来判断是否登录,第一次验证通过后,将$admin的值设置为true。然后判断值是否为true,如果不是,就进入登录界面。这样可以减少很多数据库操作。而且可以减少每次验证都要传递密码的不安全性(如果不使用SSL安全协议,验证只需要传递一次),即使密码用md5加密,也很容易被截取。

当然用它还有很多好处,比如容易控制,可以自定义存储等等(存放在数据库中)等等,这里就不一一赘述了。

需要在php.ini中设置吗?一般不需要,因为不是每个人都有权限修改php.ini。默认存放路径是服务器的系统临时文件夹,我们可以自定义存放在自己的文件夹中,这个后面会介绍。

让我们先来看一下如何创建它。其实它非常简单。

启动会话并创建 $admin 变量:

<?php

// 启动

();

//声明一个名为admin的变量并赋予其一个空值。

$["admin"] = 空;

如果您使用,或者 PHP 文件需要调用变量,则必须在调用之前使用 () 函数启动它。您不需要设置任何其他内容,PHP 会自动创建该文件。

执行完这个程序之后,我们可以在系统临时文件夹中找到这个文件,一般文件名是这样的:后面跟着一个32位编码的随机字符串。用编辑器打开看一下里面的内容:

管理员|N;

一般来说,内容结构如下:

变量名称|类型:长度:值;

用分号分隔每个变量。某些变量可以省略,例如长度和类型。

我们看一下验证程序,假设数据库存储了用户名和MD5加密的密码:

<?php

// 表单提交后...

$帖子=$_POST;

// 清除一些空白

($posts 作为 $key => $value)

$帖子[$key] = 修剪($value);

$ = md5($posts[""]);

$ = $posts[""];

$query = "`` FROM `user` WHERE `` = '$'";

// 获取查询结果

$ = $DB->($查询);

如果(!空($))

如果 ($[""] == $)

// 验证通过后,启动

();

// 注册登录成功的管理变量并赋值为 true

$["admin"] = true;

别的

die("用户名和密码错误");

别的

die("用户名和密码错误");

我们从需要用户认证的页面开始判断是否登录:

<?php

// 防止全局变量造成安全风险

$管理员=假;

// 启动会话,这一步必不可少

();

// 判断是否登录

如果(isset($["admin"])&& $["admin"] === true)

echo "您已成功登录";

别的

// 身份验证失败,将 $["admin"] 设置为 false

$["admin"] = false;

die("您无权访问");

是不是很简单呢?只需要把$看成一个存储在服务端的数组,我们注册的每一个变量都是这个数组的一个key,跟使用数组没什么区别。

如果想退出系统怎么办?销毁它就行了。

<?php

();

// 此方法销毁最初注册的变量

取消设置($["admin"]);

// 此方法销毁整个文件

();

我们可以这样设置生命周期吗?我们应该完全丢弃它吗?我认为一起使用它们最方便。

如何识别客户端用户呢?通过ID来确定。什么是ID?就是文件的文件名。ID是随机生成的,所以可以保证唯一性和随机性,保证安全性。一般如果没有设置生命周期,ID是存储在内存中的,关闭浏览器后,ID自动注销,重新请求页面后,会注册一个新的ID。

如果客户端没有被禁用,它将起到在启动会话时存储ID和生存期的作用。

让我们手动设置寿命:

<?php

();

// 保存一天

$=24*3600;

((), (), 时间() + $, "/");

其实还提供了一个函数arams()来设置生命周期,这个函数必须在调用()函数之前调用:

<?php

// 保存一天

$=24*3600;

阿拉姆($);

();

$["admin"] = true;

如果客户端使用的是IE 6.0的话,arams()函数的设置会有些问题,所以我们还是手动调用该函数来创建。

如果客户端被禁用了怎么办?没办法,所有的生命周期都是浏览器进程,只要关闭浏览器,就得重新注册才能再次请求页面。那么ID该如何传递呢?通过URL传递,或者通过隐藏表单传递。PHP会自动将ID发送到URL中。URL是这样的:,其中URL中的参数就是ID。我们可以使用$_GET来获取该值,从而实现页面之间的ID传递。

<?php

// 保存一天

$=24*3600;

// 获取当前名称,默认为

$ = ();

// 获取 ID

$ = $_GET[$];

// 使用()设置获取到的ID

($);

阿拉姆($);

();

$["admin"] = true;

对于虚拟主机来说,如果所有用户的文件都保存在系统临时文件夹中,会造成维护困难,降低安全性。我们可以手动设置文件保存路径,()就提供了这样的功能。我们可以将存储目录指向一个无法通过Web访问的文件夹,当然该文件夹必须具有读写属性。

<?php

// 设置存储目录

$ =“.//”;

// 保存一天

$=24*3600;

($);

阿拉姆($);

();

$["admin"] = true;

与 arams(); 函数一样,在调用 () 函数之前也必须调用 () 函数。

我们还可以在 中存储数组和对象。操作数组和操作一般变量没什么区别,而且在保存对象时,PHP 会自动将对象序列化(也叫序列化)然后再保存在 中。下面的例子说明了这一点:

<?php

班级

变量$年龄;

(){

回声$this->年龄;

($年龄) {

$this->年龄 = $年龄;

.php

<?php

();

“.php”;

$ = 新的();

$->(21);

$[''] = $;

echo "<a href=''>点击此处查看年龄</a>";

.php

// 设置回调函数以确保对象被重建。

('_func','');

($) {

$.“。php”;

();

$ = $[""];

// 输出 21

$->();

当我们执行.php文件时,会调用()方法,将age设置为21,并将状态序列化并保存进去(PHP会自动完成这个转换)。当传输到.php时,要输出这个值,必须反序列化刚才保存的对象。因为反序列化时需要实例化一个未定义的类,所以我们定义了一个回调函数来自动包含.php类文件。因此,会重构对象,并获取当前age值为21,然后调用()方法输出该值。

另外我们还可以使用dler函数来自定义调用方式。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/4324.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线