【发布时间】:2014-06-08 22:00:39
【问题描述】:
我正在尝试将数组引用分配给 php $_SESSION 变量,但无法使其工作。
考虑一个简单的形式:
<html>
<body>
<FORM action="post.php" method="post">
User name: <INPUT type="text" name="user"><br>
<INPUT type="submit" value="Submit">
</FORM>
</body>
</html>
post.php 在哪里:
<?php
session_start();
if( !empty( $_POST ) ) {
$data=array();
$data['user']=$_POST['user'];
$data['pass']='xxxx';
$uid="1234";
$_SESSION[$uid] = &$data;
header( 'HTTP/1.1 303 See Other' );
header( 'Location: post.php?id='.$uid );
exit();
}
if( isset( $_GET[ 'id' ] )) {
$uid=$_GET[ 'id' ];
$user=$_SESSION[$uid]['user'];
} else {
exit();
}
?>
<html>
<body>
<?php
echo "<p>Username: ".$user."</p>";
?>
</body>
</html>
我在生成的 post.php?id=1234 文件中得到一个空的用户名。我在这里缺少什么?
【问题讨论】:
-
不要通过引用将任何内容分配给会话:在您访问会话时的下一个请求中,该变量将不再存在,因此引用指向任何内容