虚拟主机域名注册-常见问题其他问题 → 其他问题

在PHP中怎么使用cookie启用会话

  一、设置

  我们的测试环境包括一个Apache Web服务器,其中加载了PHP模块。在我们的设置中,我们使用Ubuntu 20.04 LTS,但是任何最新发行版都可以。在Ubuntu上,我们需要的是apache2和php:

  $sudo apt-get install apache2

  $sudo apt-get install php

  我们还需要运行网络服务器才能使用浏览器访问示例页面:

  $sudo systemctl restart apache2

  我们还需要启用Cookie的最新浏览器。本教程使用最新的Firefox。如果您具有Noscript之类的扩展名,请在测试时禁用它或从测试Web服务器启用cookie。

  二、代码

  考虑以下示例PHP页面的源代码:

  $cookie_name = "username";

  $ask_to_store = false;

  $username = "Unknown Visitor";

  if (!isset($_COOKIE[$cookie_name])) {

  if (!isset($_REQUEST['uname'])) {

  $ask_to_store = true;

  } else {

  $username = $_REQUEST['uname'];

  setcookie($cookie_name, $username);

  }

  } else {

  $username = $_COOKIE[$cookie_name];

  }

  echo "\n\n";

  echo "

  Welcome, " . $username . "!

  \n";

  if ($ask_to_store) {

  echo "

  If you would like to set the username so we can greet you by that, enter it to the below form, and submit your request.

  \n";

  echo "

  \n";

  echo "\n";

  echo "\n";

  echo "

  \n";

  } else {

  echo "

  We are happy we can greet you by name.

  \n";

  }

  ?>

  我们将此代码放入名为的文件中page_with_cookies.php,并将其放置在测试Web服务器的php目录中。因此,我们将能够通过指定URL的浏览器访问它,如下所示:http:///php/page_with_cookies.php。我们将在以下步骤中看到此代码的作用。

  三、了解网页的工作方式

  下一步是检查页面是否正确加载。我们将浏览器指向页面,然后出现一个简单的表单。192.168.1.2是测试环境中Web服务器的IP地址,如果您正在执行此操作,则应将其更改为放置此代码的服务器的地址或DNS名称。

  首次访问时,该页面不会知道我们是谁,因此它将称呼我们为“未知访问者”。我们在代码部分第4行指定了这个名称,并且由于浏览器中还没有cookie,因此实际用户名不会覆盖该变量的值。我们在第6行检测到没有cookie设置,也没有保存访问者提交的实际用户名的请求(第7行)。这是我们显示允许访问者提交用户名的表单的状态。这是由第8行的布尔变量指定的。

  现在,我们可以填写表单提供的输入字段(由代码行16-21生成)。在此示例中,我们将使用“ Foo Bar”。

  点击提交后,页面会以我们发送的用户名打招呼。

  到目前为止,这还不是最神奇的,我们已经读取了在POST请求中发送的数据,相应地设置了用户名,并使用它来问候访问者。但是我们还设置了一个cookie(第11行),它存储浏览器中给出的数据。如果我们再次打开页面(这是另一个请求,在这里我们没有发布任何用户名信息),我们也会看到前面设置的用户名,只要cookie还在浏览器中。支持提交用户名的表单也不会显示在新页面上,因为我们是第16行if语句的“false”分支。

  三、如何重置环境

  要清除浏览器的状态,我们可以从其中删除cookie。在Firefox 74.0中可以找到它的参数->隐私和安全-> Cookies和网站数据->管理数据。

  然后我们搜索测试webserver的IP地址,因为我们是通过IP地址访问站点的。点击“删除选择”,然后点击“保存更改”,我们就完成了将网站放置在浏览器中的cookie的删除。

  如果果我们再次访问该页面,将显示最原始的匿名问候语,表单将提交一个用户名。该网站没有存储任何数据,没有cookie,它不知道我们是谁。




免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:bkook@qq.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:CentOS 8上怎么安装最新版TeamViewer
下一篇:Linux上怎么安装和配置WireGuard
  >> 相关文章
没有相关文章。
0

在线
客服

在线客服服务时间:9:00-18:00

客服
热线

19899115815
7*24小时客服服务热线

关注
微信

关注官方微信
顶部