如何对表单值进行此类检查?

时间:2014-07-06 02:04:03

标签: php

我需要一些帮助:

a form.php:

<?php
<form name="create" method="post" action="done.php">
<input type="email" name="email" class="cform" required />
<input type="submit" name="submit" />
</form>                             
?>

现在,在done.php中,我有:

<?php
$email = $_POST['email'];
$OtherVar = email@gmail.com;
?>

我的问题是,如何确定“$ email”是否等于“$ OtherVar”但没有退出form.php?

如果“$ email”=“$ OtherVar”允许用户发送表单。

如果“$ email”不是=“$ OtherVar”向用户显示消息。

希望你能解决我的问题,你可以帮助我,对不起我的英语和谢谢:)

3 个答案:

答案 0 :(得分:1)

包含jquery

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>

为您的表单和电子邮件字段指定一个ID,以便您可以通过jquery调用它:

<?php
<form name="create" id="create" method="post" action="done.php">
<input type="email" id="email" name="email" class="cform" required />
<input type="submit" name="submit" />
</form>                             
?>

现在通过jquery调用它并检查值是否相同。如果不是,则使用preventDefault()方法停止表单提交:

$('#create').submit(function(event) {

var email = $('#email').val();
var otherVariable = 'someValue;

if(!(email == otherVariable)) {
    event.preventDefault();
}
});

答案 1 :(得分:1)

如果您想查看之前提交表单的电子邮件,则需要在客户端使用javascript进行操作。如果您在提交表单之前无法应用PHP。

<form onsubmit="return checkEmail(this.email.value)" action="done.php">
    <input name="email" type="text">
    <input type="submit">
</form>

<script>
function checkEmail(email) {
    return email == 'email@gmail.com';
}
</script>

但您也可以允许提交任何电子邮件,如果电子邮件不是您想要的,请将用户返回到表单再次填写。

if ($email != "email@gmail.com") {
    header('Location: form.php');
}

请注意,如果您使用的是javascript,则所需的电子邮件地址绝不是秘密:任何人都可以在页面的源代码中找到它。另一方面,返回表单的PHP解决方案隐藏了随机访问者的电子邮件地址(虽然我仍然不建议以任何方式将其视为安全层)。

答案 2 :(得分:0)

在没有JavaScript的form.php内进行此操作的一种方法是让form.php处理后期操作:

<?php if ($_POST && $_POST['email'] == $OtherVar) { ?>
    // User submitted desired email address
<?php } else { ?>
    // User didn't submit desired email address
    <form name="create" method="post" action="form.php">
        <input type="email" name="email" class="cform" required />
        <input type="submit" name="submit" />
    </form>
<?php } ?>

但是有一个页面刷新。如果你想在没有页面刷新的情况下完成它,你需要使用一些JavaScript或jQuery:

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<form name="create" method="post" action="done.php">
    <input id="special-input" type="email" name="email" class="cform" required />
    <input id="special-submit" type="submit" name="submit" />
</form>
<script type="text/javascript">
    $('#special-submit').click(function () {
        if ($('#special-input').val() != "<?php echo $OtherVar; ?>") {
            event.preventDefault();
        }
    });
</script>