0

这是我第一次学习 php 会话,我正在处理最简单的登录页面。

$_SESSION['username']那么,只要用户永远不会关闭网页,理论上这是否可以将任何给定的字符串 $username 始终存储在其中?

这是一个虚拟网页,只是将 的值设置$_SESSION['username']为 $username。如果我这样做,并且我在我的网站上打开了不同的页面,在$_SESSION['username']我关闭网络浏览器之前是否会保留 的值?

<?php
session_start();
<html>
<body>

...

$_SESSION['username'] =  $username;
?>

所以我的大问题是,如果 $username 是 "CiniCraft" 将 $_SESSION['username'] = "CiniCraft" 直到网络浏览器关闭?如果不是,那么在关闭浏览器之前保持其值的最佳变量是什么?

我尝试了上面显示的方法,当我从 login.php 导航到 index.php 时,$_SESSION['username'] 变为空白。

安全对我来说根本不是问题,如果用户帐户被盗,那么黑客将浪费他们的时间。当然,除非他们正在寻找电子邮件以向更多伟哥广告发送垃圾邮件......

4

2 回答 2

6

是的,无论何时

$_SESSION['username'] = $username;

会话将被赋值$username。但是,请记住在分配之前启动会话,因此顺序如下:

session_start();
$_SESSION['username'] = $username;

在您需要访问它的每个页面上启动会话 - 这可能是 index.php 上不可用的原因。

所以在 index.php 你可以做这样的事情:

session_start();
echo $_SESSION['username'];

在您的示例中,这应该输出“CiniCraft”,前提是您首先调用 login.php 和 index.php。

会话通过 cookie 存储在您的浏览器中 - 只要您不重置浏览器或长时间关闭浏览器,会话应该是有效的。但是,在其他浏览器中,会话将不可用。

阅读更多关于php 上下文一般会话的信息。

安全对我来说根本不是问题

小心——请不要这样看。安全是每个人的责任,您迟早会需要它。

于 2013-03-06T02:29:19.167 回答
0

您似乎使用的是旧浏览器,因此要求您先更新浏览器。在现代浏览器中,会话的处理比旧浏览器容易。

您必须在页面起点的所有页面上提供 session_start() 的另一件事。

session_start 将有助于在用户访问您的网站时在整个网站上保持单个会话。

于 2013-03-06T02:32:59.787 回答