Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证电子邮件地址–检查是否为空_Php_Html_Validation - Fatal编程技术网

Php 验证电子邮件地址–检查是否为空

Php 验证电子邮件地址–检查是否为空,php,html,validation,Php,Html,Validation,花了几个小时后,我还是想不出来。我正在尝试验证电子邮件地址,但每次,无论我键入什么类型,它都会给我消息,好像它是空的,您没有输入电子邮件地址 编辑:修复了无效电子邮件地址错误,因为我没有在输入文本中添加名称。现在,当我输入正确的电子邮件时,它会继续加载,请稍候。有什么想法吗?是因为它没有连接到mysql吗 $email = mysql_real_escape_string($_POST['signup-email']); if(empty($email)){ $status = "e

花了几个小时后,我还是想不出来。我正在尝试验证电子邮件地址,但每次,无论我键入什么类型,它都会给我消息,好像它是空的,您没有输入电子邮件地址

编辑:修复了无效电子邮件地址错误,因为我没有在输入文本中添加名称。现在,当我输入正确的电子邮件时,它会继续加载,请稍候。有什么想法吗?是因为它没有连接到mysql吗

$email = mysql_real_escape_string($_POST['signup-email']);

if(empty($email)){
     $status = "error";
     $message = "You did not enter an email address!";
}
else if(!preg_match('/^[^\W][a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\@[a-zA-Z0-9_]+(\.[a-zA-        Z0-9_]+)*\.[a-zA-Z]{2,4}$/', $email)){ //validate email address - check if is a valid email     address
        $status = "error";
        $message = "You have entered an invalid email address!";
}
else {
    $existingSignup = mysql_query("SELECT * FROM signups WHERE signup_email_address='$email'");   
    if(mysql_num_rows($existingSignup) < 1){

        $date = date('Y-m-d');
        $time = date('H:i:s');

        $insertSignup = mysql_query("INSERT INTO signups (signup_email_address, signup_date, signup_time) VALUES ('$email','$date','$time')");
        if($insertSignup){ //if insert is successful
            $status = "success";
            $message = "You have been signed up!";  
        }
        else { //if insert fails
            $status = "error";
            $message = "Ooops, Theres been a technical error!"; 
        }
    }
    else { //if already signed up
        $status = "error";
        $message = "This email address has already been registered!";
    }
}
HTML:

然后为post变量指定一个名称:

<input type="text" name='signup-email' id="signup-email" size="20" value="Email Address" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"/>

您的表单中没有名为email的字段

你也应该这样做:如果!isset$\u POST[“电子邮件”]{


如果我理解正确,除非您没有发布所有代码。

尝试将name=email添加到电子邮件输入的html中……此外,$email应该定义为$email=$\u POST['email'];

您的输入字段没有名称,PHP从输入的name属性检索$\u POST变量。换句话说,没有名称,无法访问该输入的值。 接受draevor的建议,将name属性添加到输入中。 此外,正则表达式中[a-zA-和Z0-9_]之间有大量空格

“/^[^\W][a-zA-Z0-9\+\.[a-zA-Z0-9\]+*\@[a-zA-Z0-9\+\.[a-zA-Z0-9\]+*\.[a-zA-Z]{2,4}$/”


不确定这是否是由于复制和粘贴造成的,但如果源代码中有空格,则可能会导致正则表达式不起作用。我从未听说过preg_match函数有忽略空白标志,如果我错了,请更正我。

请在定义$email的位置共享代码。这是唯一正确的电子邮件正则表达式。name是上的必需属性输入元素,这是获取请求中参数所必需的。详细说明:id=注册电子邮件在表单上下文中毫无用处,当然对CSS仍然有用。忘记发布定义$email.edited这是复制和粘贴的错误。我的代码中没有空格确定这是因为我没有给我的post变量命名。但是现在当我键入有效的电子邮件地址。它会显示“请等待并永远停留在那里”。我们最好在新问题中处理此问题,而不是在评论中:-
if(strlen($_POST['signup-email'])) == 0){
  $status = "error";
  $message = "You did not enter an email address!";
}
<input type="text" name='signup-email' id="signup-email" size="20" value="Email Address" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"/>