不在php中使用SESSION ['user']

时间:2013-03-27 15:14:51

标签: php

如果我想存储当前在我网站上的用户的$ _SESSION ['user']名称,并且我想在每个页面上写一条消息,比如Hy“user”,我该怎么办?我试过了:

<?php 
      session_start();
?>  
   <form> ... </form>

进入验证页面

     <?php  
      $_SESSION['user']=$_POST['user'];
      ...
    ?>

//以及我有的其他页面

 <?php
echo "Hy ".$_SESSION['user'];
...

&GT;

在我的网站上,我只有“Hy”而没有用户。我做错了什么?

3 个答案:

答案 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(),一旦您在特定页面中启动会话,就可以访问会话值。