-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。プランク氏のプロジェクトがほぼ完成したと感じられるまでには、あと 1 時間ほどかかるようです。

編集:
修飾子 を追加しようとしましたが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>。注 -idと同じではありませんname

于 2013-11-12T00:10:41.400 に答える
2

name=""PHP から正しく取得するには、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>
于 2013-11-12T00:10:59.807 に答える
1

値を取得している最も可能性の高い理由は、ほとんどがまたはスクリプトで使用/予約されているNULLPHP を実行しようとしているという結論に達しました。(PERL/CGI) –スクリプトはこのフォルダーでは実行されません。cgi-bin.pl.cgi.php

固定された名前の入力を使用してコードをテストし、下でテストcgi-binしても同じ結果が得られました。

register.phpファイルをあなたの外に移動し、次のコードを使用して、選択したフォルダーまたはサブフォルダーのcgi-bin下に配置します。public_html

(表示されているとおりにコピー/貼り付けし、cgi-bin ではなく public html の下の同じフォルダー内で使用します)

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 に答える