在PHP中验证表单时的警告框

时间:2013-08-02 02:11:30

标签: php javascript html regex alertdialog

我正在编写PHP来验证表单数据。 我在拍摄警报箱时遇到了麻烦。

这是我的代码的骨头:

function emailcheck ($email1)
{
$regexp="/^[a-zA-Z0-9_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9.-]+$/"; 

if (preg_match($regexp,$email1))
{
    return TRUE;
}
else
{
    return FALSE;
}
}
if (isset($_POST['submit'])) {

if ($emailcheck == TRUE){
    //send email
    //various fields etc
 echo '<script type="text/javascript"> alert("Your form has been submitted.") </script>';

 }
 else
 {
    echo '<script type="text/javascript"> alert("Enter a valid email address.") </script>';
    return FALSE;
 }
 }

当我测试电子邮件检查功能的表单为FALSE时,我得到了这个;

alert

接着是:

alert2

我该如何解决这个问题?感谢

修改

我不关心整个php / javascript验证;我正在看一个具体的细节 - 我的功能在这里做错了什么?为什么要打印出警报......必须有一些我忽略的基本内容。

显然,我使用isset函数的方式以及我在emailcheck函数中调用的方式存在问题。

我有客户端验证,但我专注于此问题中的php验证 - 所以请不要讨论javascript验证。

3 个答案:

答案 0 :(得分:3)

你有一些语法/引用错误。备份您的文件,然后通过删除或大幅简化代码部分来二进制搜索A / B,直到症状得到修复。

然后你找到了你的问题,&amp;可以在恢复的文件中修复它。

后记:错误可能在PHP引用或<?语法中 - 我们看到Javascript要么被HTML发出,要么被浏览器解析。

尝试查看来源&amp;检查浏览器看到了什么?

PS2:我们也在浏览器中看到 PHP代码} else {)。您的代码示例未显示<? PHP开头 - 您在<? ?> PHP语法中遇到了某种错误。

顺便说一下,我是唯一一个真正了解这些明显症状的人。帮助你。

答案 1 :(得分:2)

$ emailcheck是一个变量,而不是一个函数。它应该是

$emailcheck = emailcheck($email);
if($emailcheck === TRUE): /* more code */ endif;

IMO我会使用PHP安装的功能。

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "<script>alert('GOOD email');</script>";
} else {
    echo "<script>alert('BAD email');</script>";
}

link to php fiddle

答案 2 :(得分:2)

我认为您需要在if语句中更改测试。

function emailcheck ($email1) {
    $regexp="/^[a-zA-A-Z0-9_\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/";   
    if (preg_match($regexp,$email1)) {
        return TRUE;
    } else {
        return FALSE;
    }
}

if (isset($_POST['submit'])) {
    $emailAddy = "someone@somewhere.com"; //get email address from form here
    if (emailCheck($emailAddy)){
        //send email
        //various fields etc
        echo '<script type="text/javascript"> alert("Your form has been submitted.");</script>';

    } else {
        echo '<script type="text/javascript"> alert("Enter a valid email address."); </script>';
    }
}

您当前的语句未检查函数的返回值,它正在测试变量$ emailCheck的值,该值实际上并未设置为任何值。

修改

我还注意到你的regexp字符串中你有一个大写'S'而不是$,假设你想表示字符串的结尾。此外,您的两个alert()调用最后都缺少分号。我已经尝试了这个代码,它似乎工作。我修改了我的答案以反映这些变化。希望有所帮助!