所以我正在尝试会话,这就是我的代码的样子:
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中的用户[名称]
任何帮助将不胜感激。
答案 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()开头; 你不能像你一样陷入困境。 请发布更多代码。