【问题标题】:email validation with php使用 php 验证电子邮件
【发布时间】:2016-02-29 13:22:00
【问题描述】:

我制作了一个用于安卓设备的成功注册/登录脚本。我对 PHP 很陌生,所以请多多包涵。

<?php
   require "init.php";
   header('Content-type: application/json');

    $email = $_POST['email'];
    $user_name = $_POST['user_name'];
    $user_pass = $_POST['user_pass'];
    $msg = "Congratulations. You are now registered to the most amazing app    
    ever!";

    $passwordEncrypted = sha1($user_pass);         



    if($email && $user_name && $user_pass){

        $sql_query = "select * from user_info WHERE email  ='".mysqli_real_escape_string($con, $email)."' or user_name 
        ='".mysqli_real_escape_string($con, $user_name)."'";

        $result = mysqli_query($con, $sql_query);   

        $results = mysqli_num_rows($result);

        if ($results){
            $don = array('result' =>"fail","message"=>"Email or username exists.");
        }else{

            $sql_query = "insert into user_info values('$email','$user_name','$passwordEncrypted');";

            if(mysqli_query($con,$sql_query)){

                $don = array('result' =>"success","message"=>"Successfully registered!Well done");
                //mail($email,"Well done",$msg);
            }
        }
    }else if(!$email || (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))){


            $don = array('result' =>"fail","message"=>"Please enter a valid email");               


        }else if(!$user_name){

         $don = array('result' =>"fail","message"=>"Please enter your username");

        }else if(!$user_pass){

         $don = array('result' =>"fail","message"=>"Please enter a password");

        }
    }       

   echo json_encode($don);

 ?>

使用上述代码,电子邮件未经过验证,即使用户输入的是 theo 而不是“theo@gmail.com”,也会进入数据库

【问题讨论】:

  • 好吧,在插入电子邮件之前,我没有看到任何错误处理来检查电子邮件是否真的是电子邮件......?
  • 您就在那儿,先生。卡汉给出了解决方案:)。

标签: php validation email


【解决方案1】:

您在if 语句中插入数据库:

if($email && $user_name && $user_pass){

这仅检查$email 变量是否设置,而不检查它是否有效。

除非$email 变量是有效的电子邮件,否则不要触发该行:

if($email && $user_name && $user_pass && filter_var($email, FILTER_VALIDATE_EMAIL)){

【讨论】:

  • 太好了:)。这是工作。但是当用户没有输入有效的电子邮件时,我应该如何生成 json 呢?我应该在哪里输入这样的代码行? $don = array('result' =>"fail","message"=>"请提供有效的电子邮件");
【解决方案2】:

通常在提交表单之前进行电子邮件验证,原因很明显:最好在提交表单信息并加载下一页之前收到警告格式错误。所以人们通常为此使用Javascript。您可以在 Internet 上找到很多关于如何执行此操作的页面。这是一个:http://www.randomsnippets.com/2008/04/01/how-to-verify-email-format-via-javascript/

但是,如果您致力于使用 PHP 来做这件事,Kahan 有您的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-25
    • 2017-03-19
    • 2017-11-19
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多