-2

我的 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

4 回答 4

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>
于 2013-11-12T00:10:23.527 回答
3

未命名<input>的字段不会传递给您的POST请求。尝试这个:

<input type="text" name="username" id="username"/>

您需要对其他<input>s 进行类似的更改。注意 -id不一样name

于 2013-11-12T00:10:41.400 回答
2

name=""属性与 HTML 表单一起使用,以便从 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>
于 2013-11-12T00:10:59.807 回答
1

我得出的结论是,您获得NULL值的最可能原因是您正在尝试执行 PHP,cgi-bin其中大部分使用/保留用于.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);
?>
于 2013-11-12T01:34:20.833 回答