如果我想存储到$_SESSION['user']用户的名字,这是目前在我的网站上,我想在每个页面上写一个消息,像Hy "user",我必须做什么?我试过:
<?php
session_start();
?>
<form> ... </form>
在验证页中我有
<?php
$_SESSION['user']=$_POST['user'];
...
?>
//在其他页面我有
<?php
echo "Hy ".$_SESSION['user'];
...
?>
在我的网站上,我只有"为什么"没有用户。我做错了什么?
在每页的开头调用session_start()
您必须确保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");
您在其他页面开始时缺少session_start()
,一旦您在特定页面启动会话,会话值将可以访问。