2013-03-06 20 views
0

这是我第一次使用php学习会话,我正在尽可能使用最简单的登录页面。

所以理论上这样可以保持任何给定的字符串$用户名总是存储在$_SESSION['username']只要用户永远不会关闭网页?

这是一个虚拟网页,只需将$_SESSION['username']的值设置为$ username即可。如果我这样做,并且我在我的网站上打开了一个不同的页面,那么$_SESSION['username']的值仍然会保留,直到关闭Web浏览器为止?

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

...

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

所以我最大的问题是,如果$的用户名是 “CiniCraft” 将$ _SESSION [ '用户名'] = “CiniCraft”,直到web浏览器被关闭?如果不是,那么在浏览器关闭之前使用哪个最佳变量保留其价值?

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

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

+2

您需要每个页面顶部的session_start()您想要使用Sessions – ElefantPhace 2013-03-06 02:17:27

回答

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,你会更快地需要它,而不是晚些时候。

0

看来您使用的是旧浏览器,因此请求您先更新浏览器。就像在现代浏览器中一样,处理会话比旧浏览器更容易。

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

当用户访问您的网站时,session_start将有助于在整个网站上维护单个会话。

相关问题