我从WordPress元数组中提取了一个变量-$vCode
.
此变量是一个5位数。
在页面前端,我有一个HTML表单,请求输入代码和一个提交按钮。
提交后,我希望检查输入的代码$vCode
如果匹配或不匹配,则显示“success”或“fail”。
我应该在这里使用HTML表单还是PHP在不离开页面的情况下运行检查的最佳方式是什么到目前为止,我掌握的是:
$vCode = 11111;
$message = "";
if(!isset($_POST[\'submitbutton\'])){
$message = "not submitted";
} elseif ((isset($_POST[\'submitbutton\'])) && ($input = $vCode)) {//check if form was submitted
$input = $_POST[\'vCode\']; //get input text
$message = "Success! You entered: ".$input;
} elseif ((isset($_POST[\'submitbutton\'])) && ($input != $vCode)) {
$input = $_POST[\'vCode\'];
$message = "OOps";
}
?>
<form action="" method="post">
<?php echo $message; ?>
Validation Code:<br>
<input type="number" name="vCode" value=""><br>
<input type="submit" name="submitbutton" value="Submit">
</form>
这总是表明我输入了正确的数字?
一如既往地感谢你。
最合适的回答,由SO网友:Jacob Peattie 整理而成
您的问题是:
$input = $vCode
这不是比较变量。它指定了
$vCode
到
$input
. 如果要比较这两个值,需要使用
==
或
===
.
$input == $vCode
但它仍然不起作用,因为你还没有真正定义
$input
. 您只是在比较之后定义它,这没有多大用处。
因此,您的逻辑需要如下所示:
$vCode = 11111;
$message = \'\';
if( ! isset( $_POST[\'submitbutton\'] ) ) {
$message = \'not submitted\';
} else {
$input = $_POST[\'vCode\'];
if ( $input == $vCode ) {
$message = \'Success! You entered: \' . $input;
} elseif ( $input != $vCode ) {
$message = \'OOps\';
}
}
请注意:
我们正在分配$_POST[\'vCode\']
到$input
在检查之前我们不想费心检查$_POST[\'submitbutton\']
设置,因为代码将运行的唯一原因是,如果是,则是因为第一个条件我们正在使用==
比较值。我们正在使用==
而不是===
, 因为$vCode
是整数,而$_POST[\'vCode\']
将是字符串。如果你真的$vCode
从post meta,那么它也将是一个字符串,在这种情况下,您可以使用===
. 关于最后一点,最好的解决方案是将它们都转换为整数,并使用严格的比较:
if ( (int) $input === (int) $vCode ) {