0

それでは、これは誰かがこれを尋ねるのはn回目になる可能性がありますが、正直なところ、私はこの1時間ほどGoogleで役立つものを何も手に入れませんでした。私がやりたいのはトリビアか、そう思った。私はこれをJavaスクリプトで動作させていますが、PHPに移動したいと思います。簡単に言えば:

  • 静的な値で変数を宣言する
  • ユーザーが上記の変数の値を入力するように求められるテキストフィールドを追加します
  • フィールドがa)空、b)空でない不一致、またはc)空でない一致であるかどうかを確認します

私の(限られた)PHPの知恵は、それが以下のようなものであるべきだと私に信じさせましたが、明らかにそうではありません。洞察をいただければ幸いです。

<?php
$coconew = "blah";

if (isset ($_POST["cocosub"])) {
    if ($_POST["cocoval"] == "") {
        echo "empty";
    } else {
        if ($_POST["cocoval"] != $coconew) {
            echo "mismatch";
        } else {
            echo "match";
        }
    }
}
?>

<form action="<?php $_SERVER['PHP_SELF'] ?>" id="cocosub" method="post">
    <div>
        <?php echo $coconew; ?>
        <input type="text" id="cocoval">
        <input type="submit">
    </div>
</form>
4

4 に答える 4

1

変更する必要があります

<input type="text" id="cocoval">

<input type="text" name="cocoval">

これを行うには他の(そしておそらくより良い)方法がありますが、あなたは正しい方向に進んでいます。

于 2012-08-12T01:12:49.547 に答える
1

$_POSTフォーム要素の属性のみを検索するため、nameフォームを次のように変更します。

<?php
$coconew = "blah";

if (isset ($_POST["cocoval"])) {
    if ($_POST["cocoval"] === "") {
        echo "empty";
    } else {
        if ($_POST["cocoval"] !== $coconew) {
            echo "mismatch";
        } else {
            echo "match";
        }
    }
}
?>


<form  id="cocosub" method="post">
    <div>
        <?php echo $coconew; ?>
        <input type="text" id="cocoval" name="cocoval">
        <input type="submit">
    </div>
</form>

(他にもいくつか変更を加えました。フォームではなく要素をチェックしたいのですがisset、属性を指定しないと同じページにPOSTされます[したがって、]を追加する必要はありませんecho。また、より適切なタイプチェックを追加します。あなたのphpで)

于 2012-08-12T01:13:26.217 に答える
1

すでに投稿されている他の回答に加えて、PHPのセッションサポートにも興味があるかもしれません(静的変数がどの程度「静的」である必要があるかによって異なります)。$cocoval同じユーザーによる同じURLに対する複数のリクエストにわたって値を保存する必要がある場合は、ここに変数とその他の変数を配置します。詳細については、こちらをご覧ください。

http://php.net/manual/en/features.sessions.phpおよび http://www.php.net/manual/en/book.session.php

于 2012-08-12T01:17:18.690 に答える
0

これは機能します:

<?php
session_start();

if(isset($_POST["cocosub"])){

    $input = trim($_POST["cocoval"]);

    if($input == ""){
        echo "empty";
    } elseif($input != $_SESSION["coconew"]){
        echo "mismatch";
    } else {
        echo "match";
    }
}

$_SESSION["coconew"] = substr(md5(uniqid()), 0, 5);

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" id="cocosub" method="post">
<div>
    <?php echo $_SESSION["coconew"]; ?>
    <input type="text" id="cocoval" name="cocoval">
    <input type="submit" name="cocosub">
</div>
</form>

最初のif(isset(...))条件をtrueにするには、[送信]ボタン要素にname="cocosub"を追加する必要がありました。そのため、スクリプトは機能しませんでした。また、idの代わりに、入力テキストフィールドでname = "cocoval"を使用して、$_POSTに引き継ぐ必要があります。

于 2012-08-12T01:18:45.270 に答える