HTML POST输出为空

时间:2013-11-12 00:08:30

标签: php html forms

我的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。我尝试了POSTGET。好像我是普朗克的一个长度,而不是将他的项目带到感觉最终完成的地方。

修改
尝试添加name=""修饰符,仍为NULL NULL

修改编辑:
固定。不知道我做了什么,但它已经修好了。

4 个答案:

答案 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>进行类似的更改。注意 - idname

不同

答案 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)

HTML表单

<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处理程序

<?php
$user = $_POST['username'];
$pass = $_POST['password'];

$encrypted_pass = md5($pass);

//... insert terrible code here ...

var_dump($user);
var_dump($pass);
?>