可以';我似乎找不到;我的$_POST有问题


can't seem to find what's wrong with my $_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:''examplep''htdocs''Assignment_3''login.php中的未定义索引:user[name]

任何帮助都将不胜感激。

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

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

和:

$_POST['user[name]'];

不会起作用。

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

乍一看,您的意思似乎是使用会话变量而不是post。

您有:

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>

您必须在调用任何会话之前启动会话。您的页面必须以session_start()开头;你不能真的像以前那样把代码搞砸。请张贴更多代码。