这段代码是:$ _SESSION ['username'] = $ username;足以在会话中存储用户名?

时间:2013-03-06 02:13:43

标签: php mysql

这是我第一次使用php学习课程,而且我正在使用最简单的登录页面。

理论上这可以保留任何给定的字符串$ username始终存储在$_SESSION['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']变为空白。

安全对我来说根本不是问题,如果用户帐户遭到入侵,那么黑客就会浪费时间。当然,除非他们正在寻找垃圾邮件更多的伟哥广告......

2 个答案:

答案 0 :(得分: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存储在您的浏览器中 - 因此,只要您不重置浏览器或将其关闭较长时间,会话就应该有效。但是,在其他浏览器中,会话将不可用。

详细了解会话in php contextgenerally

  

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

小心 - 请不要这样看。 Security is everyone's responsibility,你很快就会需要它。

答案 1 :(得分:0)

您似乎正在使用旧浏览器,因此请求您先更新浏览器。与现代浏览器一样,会话的处理比旧浏览器容易。

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

当用户访问您的网站时,

session_start将有助于在整个网站上维护单个会话。