所以我正在尝试会话,这就是我的代码的样子:
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
字段使用简单的name
s。
乍一看,您的意思似乎是使用会话变量而不是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()开头;你不能真的像以前那样把代码搞砸。请张贴更多代码。