如何检查文本框中的文本是否与PHP中的变量匹配

如何检查文本框中的文本是否与PHP中的变量匹配,php,Php,我试图检查用户在我的文本框中输入的名为“valid”的文本是否等于包含随机生成的6位数的变量 $validkey = rand(100000,999999); 我的问题是,;在“if”语句中,如何检查用户在文本框中输入的数字是否与$validkey变量相同?它将嵌入一个if中,if检查是否单击了一个名为“next”的按钮。因此,当点击按钮时,它将进行检查 我目前的代码如下: <form method="post" action="<?php echo htmlspecialchar

我试图检查用户在我的文本框中输入的名为“valid”的文本是否等于包含随机生成的6位数的变量

$validkey = rand(100000,999999);
我的问题是,;在“if”语句中,如何检查用户在文本框中输入的数字是否与$validkey变量相同?它将嵌入一个if中,if检查是否单击了一个名为“next”的按钮。因此,当点击按钮时,它将进行检查

我目前的代码如下:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
E-mail: <input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit"> 
<br>
<input type="text" name="valid">
<input type="submit" name="next" value="Next">
</form>

<?php 
$validkey = rand(100000,999999);

if (isset($_POST["submit"]))// the user has submitted the form 
{    
    if (preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) 
    {
        if (isset($_POST["email"])) // Check if the "from" input field is filled out
        {
        $from = "Simon"; // sender
        $subject = "Validation Key";
        $message = "Your Validation key:      ".$validkey."      enter this key into the required field to gain access to the Cyber Security Health Check";
        $message = wordwrap($message, 70);
        mail($_POST["email"],$subject,$message,"From: $from\n");
    echo '<span class="success">We have sent a validation key to your email!</span>';

         }
    }
}

if (isset($_POST["next"]))
{
if ($_POST['valid'] == $validkey)
{
    echo '<span class="success">CORRECT!</span>';
}
else
{
    echo '<span class="error">INCORRECT!</span>';
}
}
?>
如果我把这个问题写错了,或者我没有提供足够的信息,我很抱歉,我是一个PHP新手


感谢您提前提供的帮助。

使用intval函数解析输入值,然后将其与生成的值进行比较。

这是一种情况吗

if isset($_REQUEST['next']) { // next has been pressed
    if($_REQUEST['textentry'] === $validkey) { // entered text identical to the valid key
        // handle correct entry
    }
    else {
        // handle incorrect entry
    }
}
else {
    // handle some other button being pressed
}

我不知道这是否有帮助,或者我正确理解了你的问题

您是否尝试过如果$_POST['valid']=$validkey{}

或者您也可以使用jqueryajax请求,无需提交下一步按钮,当用户将离开文本框时,Ajax请求将进行验证,您可以基于此显示消息

$(document).ready(function(){
$("input[name='valid']").on('blur', function(){
    var text = $("input[name='valid']").val();
    var data = 'valid=' + text;
    $.ajax({
        type:"POST",
        url:"checkvalidkey.php",
        data: data,
        success: function(html){
            $("p").html(html)
        }
    })
});

})

试试这段代码。这是非常基本的代码。进行必要的更改,如添加表单和所有内容,并根据需要使用它

<?php $validkey="hello" ?> 
<script type="text/javascript">
function check_value()
{

  var code = document.getElementById("code").value;
  if(code=='<?php echo $validkey; ?>')
  {
    alert('Matches');
  }
}
</script>
<input type ="text" name="code" id="code" />
<button onclick="check_value();">Click</button>

希望这就是你一直在寻找的东西。

到目前为止你做了什么?代码在哪里?我不是真的要求代码修复,更多的是要求在“if”语句中添加什么。文本框的名称为“valid”,并且位于一个具有“post”方法的表单中,因此,如果我是正确的,要获取文本框中的文本,请使用$\u post['valid']。因此,使用它和VALABLE$validkey是否不足以生成所需的'if'语句?if$\u POST['valid']=$validkey{//他们是sameI尝试过的,这实际上是我目前拥有的,但我认为这是错误的,我将编辑我的问题以添加更多信息以提供帮助。那么当你尝试它时发生了什么?伙计,这是一个很大的数字…如果我以那种形式输入,我可能永远都不会遇到真正的情况。你正在将字符串与数字进行类型比较r、 我建议将textentry转换为整数,或将$validkey转换为字符串。