SESSION['user']在php中不起作用


Not working SESSION['user'] in php

如果我想存储到$_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(),一旦您在特定页面启动会话,会话值将可以访问。