如果我想存储当前在我网站上的用户的$ _SESSION ['user']名称,并且我想在每个页面上写一条消息,比如Hy“user”,我该怎么办?我试过了:
<?php
session_start();
?>
<form> ... </form>
进入验证页面
<?php
$_SESSION['user']=$_POST['user'];
...
?>
//以及我有的其他页面
<?php
echo "Hy ".$_SESSION['user'];
...
&GT;
在我的网站上,我只有“Hy”而没有用户。我做错了什么?
答案 0 :(得分:6)
答案 1 :(得分:4)
您必须确保函数session_start()位于您要使用会话的每个页面上。此外,在将任何标头/输出发送到浏览器之前,需要使用session_start()。
不可强>
<?php
session_start();
//Do something with sessions
$_SESSION['user'] = $username;
<强>为:强>
<?php
echo 'Hi';
session_start();
<强>为:强>
<head>
<title>Page Title</title>
</head>
<?php
session_start();
此外,如果您不清理输出,那么您当前的实现会带来安全风险。确保在输出用户名时使用htmlspecialchars,否则您将接受XSS攻击:
echo htmlspecialchars($_SESSION['user'], ENT_QUOTES, "utf-8");
答案 2 :(得分:1)
您在其他页面的开头缺少session_start()
,一旦您在特定页面中启动会话,就可以访问会话值。