似乎无法找到我的$ _POST出了什么问题

时间:2013-11-17 03:14:55

标签: php session post

所以我正在尝试会话,这就是我的代码的样子:

session_id($username);
session_start();
$_SESSION['logged_in'] = true;
$_SESSION['time_logged_in'] = time();
$_SESSION['userName'] = $_POST['user[name]'];

我的表单如下:

<form method="POST" action="login.php"> 
    <table>
    <!--Text input for login-->
    <tr><td>Username:</td>
    <td><input type = 'TEXT'
           name = 'user[name]'
           value = '<?php  if(isset($_POST["user"])) {$tmp = $_POST["user"]; echo $tmp["name"]; } ?>'></td></tr>

我尝试过$ _POST ['user']和$ _POST ['user'] ['name']

的组合

错误代码: 注意:未定义的索引:第22行的C:\ xampp \ htdocs \ Assignment_3 \ login.php中的用户[名称]

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

$_POST是一个包含键/值字符串的映射(关联数组),而不是对象, 所以像:

$tmp = $_POST["user"]; 
echo $tmp["name"];

和:

$_POST['user[name]'];

无效。

此外,当您为name属性分配值为user[name]时 - 表单提交时,它将通过编码:user%5Bname%5D - 所以不要这样做:使用HTML表单中name字段的简单input

答案 1 :(得分:0)

快速浏览一下,您似乎意味着使用会话变量而非发布。

你有:

value = '<?php  if(isset($_POST["user"])) {$tmp = $_POST["user"]; echo $tmp["name"]; } ?>'></td></tr>

它应该是:

value = '<?php  if(isset($_SESSION["userName"])) {echo $_SESSION["userName"]; } else { echo ''; } ?>'></td></tr>

答案 2 :(得分:-1)

您必须在调用任何会话之前启动会话。 您的页面必须以session_start()开头; 你不能像你一样陷入困境。 请发布更多代码。