我的HTML文件中有一个表单:
<form action="cgi-bin/register.php" method="POST">
<table border="0">
<tr>
<td> <label for="username"> New Username: </label> </td>
<td> <input type="text" id="username" name="username"/> </td>
</tr>
<tr>
<td> <label for="password"> New Password: </label> </td>
<td> <input type="password" id="password" name="password"/> </td>
</tr>
<tr> <td> <input type="submit" value="Submit"> </td> </tr>
</table>
</form>
如您所见,转到cgi-bin/register.php
:
<?php
$user = $_POST['username'];
$pass = $_POST['password'];
$encrypted_pass = md5($pass);
//... insert terrible code here ...
var_dump($user);
var_dump($pass);
?>
哪个转储:
NULL NULL
你们可能相信我正在输入表格中的信息。我究竟做错了什么?我唯一能看到的是错误的method
。我尝试了POST
和GET
。好像我是普朗克的一个长度,而不是将他的项目带到感觉最终完成的地方。
修改
尝试添加name=""
修饰符,仍为NULL NULL
。
修改编辑:
固定。不知道我做了什么,但它已经修好了。
答案 0 :(得分:3)
仅将命名字段传递给POST
请求。将name
添加到<input>
代码:
<input type="text" id="username" name="username" />
<input type="password" id="password" name="password" />
完整代码
<form action="cgi-bin/register.php" method="POST">
<table border="0">
<tr>
<td> <label for="username"> New Username: </label> </td>
<td> <input type="text" id="username" name="username"/> </td>
</tr>
<tr>
<td> <label for="password"> New Password: </label> </td>
<td> <input type="password" id="password" name="password"/> </td>
</tr>
<tr> <td> <input type="submit" value="Submit"> </td> </tr>
</table>
</form>
答案 1 :(得分:3)
未命名的<input>
字段不会传递给您的POST
请求。试试这个:
<input type="text" name="username" id="username"/>
您需要对其他<input>
进行类似的更改。注意 - id
与name
答案 2 :(得分:2)
使用带有HTML表单的name=""
属性可以从PHP中正确选取
<form action="cgi-bin/register.php" method="POST">
<table border="0">
<tr>
<td> <label for="username"> New Username: </label> </td>
<td> <input type="text" id="username" name="username"/> </td>
</tr>
<tr>
<td> <label for="password"> New Password: </label> </td>
<td> <input type="password" id="password" name="password"/> </td>
</tr>
<tr> <td> <input type="submit" value="Submit"> </td> </tr>
</table>
</form>
答案 3 :(得分:0)
我得出的结论是,您获得NULL
值的最可能原因是您尝试在cgi-bin
内执行PHP,这主要用于.pl
或.cgi
脚本。 (PERL / CGI) - .php
脚本不会在此文件夹下执行。
使用固定的命名输入测试代码,并在cgi-bin
下进行测试产生了相同的结果。
将register.php
文件移到cgi-bin
之外,并使用以下代码将其放在public_html
或您选择的子文件夹下:
(完全如图所示复制/粘贴并在公共html下的同一文件夹中使用而不是cgi-bin)
<form action="register.php" method="POST">
<table border="0">
<tr>
<td> <label for="username"> New Username: </label> </td>
<td> <input type="text" id="username" name="username"/> </td>
</tr>
<tr>
<td> <label for="password"> New Password: </label> </td>
<td> <input type="password" id="password" name="password" /> </td>
</tr>
<tr> <td> <input type="submit" value="Submit"> </td> </tr>
</table>
</form>
<?php
$user = $_POST['username'];
$pass = $_POST['password'];
$encrypted_pass = md5($pass);
//... insert terrible code here ...
var_dump($user);
var_dump($pass);
?>