微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 网站访问控制如何实际工作?

我刚刚开始学习Web开发,现在有些东西让我感到困惑,网站如何控制你可以访问和无法访问的内容.

例如,像Facebook这样的网站.当我第一次访问该网站时,它会显示一个登录表单,一旦我记录了我尝试访问的相同页面,现在显示与我相关的信息,我只能在登录后访问,我可以导航到不同的站点和然后回归谷歌,它仍然允许我使用,如果没有再次登录.

一个站点在没有登录时会阻止某人试图访问某个特定页面,让我们说一下页面viewProfile.PHP.网站如何知道允许访问此页面的人员?

我意识到这个问题可能看起来令人困惑和基本,但它只是在观看Facebook时发现的一些东西.

谢谢.

解决方法:

这是一个非常简单的概念,称为会话.

当您访问Facebook时,它会读取通过IP地址,浏览器和其他一些小信息等连接发送给它的唯一信息,当这些信息组合在一起时,它会创建一个唯一的标识符.

然后将此唯一标识符存储在如下文件中:

 d131dd02c5e6eec4693d9a0698aff95c.session

因此,当您使用凭据登录时,应用程序会将此信息添加到此文件中,例如上次活动等.

当你离开并回来时,facebook会读取随每个请求发送的信息,然后将它们全部加在一起并创建一个唯一的哈希,如果这个哈希存在于它的存储系统中,它将打开它并读取内容,并确切地知道你是谁.

所有这些都与cookie结合,唯一的哈希被发送回浏览器并存储在您的cookie文件夹中,这个cookie文件会随着每个请求发送回Facebook.

PHP在内部处理这个问题,因此启动并运行它是非常基本的:http://php.net/manual/en/features.sessions.php

这是一个可以帮助您更多地理解这个概念的例子.

<?PHP
/*
    * The session_start generates that hash and send a cookie to the browser
    * This has to be first as you can only send cookie information before any content
*/
session_start();

/*
    * Anything storeg within $_SESSION is what's been read from the session file and
    * We check to see if the information has already been set on the first time the user
    * visited the site
*/
if(!isset($_SESSION['hits']))
{
    $_SESSION['hits'] = 0;
}

/*
    * Now we increment the value every time the page is laoded
*/
$_SESSION['hits']++;

/*
    * Now we display the amount's of hits the user has loaded the page.
*/

echo 'You have vistited this site <strong>' . $_SESSION['hits'] . '</strong> times.';

?>

如果你加载这个页面,然后按F5,会话值得到每个请求增加,所以你应该看到如下内容

>你有1次访问这个网站.
>你有2次访问这个网站.
>你有3次访问这个网站.
>你有4次访问这个网站.
> ……

会话文件对于每个访问者来说都是唯一的,这意味着当在PHP中使用会话变量时,它仅对该用户而言,因此每个人都有自己的会话.

正如您研究的那样,可以在StackOverflow中搜索某些标签,例如PHP和会话.

https://stackoverflow.com/questions/tagged/php+session

这是一个关于cookie和会话优势等的好问题.

Purpose Of PHP Sessions and Cookies and Their Differences

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐