0

那么,这可能是有人问这个问题的第 n 次了,但老实说,我在谷歌上花费了最后一个小时左右的时间并没有抓住任何有用的东西。我想做的只是琐事,至少我是这么想的。我有这个在 Java Script 中工作,但想把它移到 PHP 上。简单来说:

  • 声明一个具有静态值的 var
  • 添加要求用户输入上述var值的文本字段
  • 检查字段是否为 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.phphttp://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>

您需要将 name="cocosub" 添加到提交按钮元素,以使第一个 if(isset(...)) 条件为真。这就是脚本不起作用的原因。此外,您还需要在输入文本字段中使用 name="cocoval" 而不是 id,以便将其延续到 $_POST。

于 2012-08-12T01:18:45.270 回答