PHP如何检查文本字段是否与var匹配

时间:2012-08-12 01:07:49

标签: php validation

那么,这可能是有人问这个问题的第n次,但说实话,我并没有在谷歌的最后一个小时左右拿到任何有用的东西。我想做的是琐事,或者我想。我有这个在Java脚本中工作,但想将它移动到PHP。简而言之:

  • 声明具有静态值的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 个答案:

答案 0 :(得分:1)

您需要更改

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

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

还有其他(可能更好)的方法,但你走在正确的轨道上。

答案 1 :(得分: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中添加更好的类型检查

答案 2 :(得分:1)

除了已发布的其他答案之外,您可能还对PHP的会话支持感兴趣(取决于您需要静态变量的“静态”)。如果您需要在同一用户的同一URL的多个请求中保存其值,那么您可以将$cocoval和任何其他变量放在这里。有关详细信息,请参阅此处:

http://php.net/manual/en/features.sessions.phphttp://www.php.net/manual/en/book.session.php

答案 3 :(得分: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(...))条件为true。这就是脚本不起作用的原因。此外,您还需要在输入文本字段中使用name =“cocoval”而不是id,以便将其结转到$ _POST。