Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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_Mysql_Database_Validation_Email - Fatal编程技术网

PHP首先将数据发送到数据库,然后进行验证

PHP首先将数据发送到数据库,然后进行验证,php,mysql,database,validation,email,Php,Mysql,Database,Validation,Email,我在电子邮件验证方面遇到问题 电子邮件验证正在工作,但它首先发送表单,如果我刷新页面并再次发送相同的数据,它将进行验证。 为什么在发送之前不进行验证 我的代码: <?php include_once 'init.inc.php'; // database connection error_reporting(E_ALL); // function for Registration function regUser($db) { $password = password_hash(

我在电子邮件验证方面遇到问题

电子邮件验证正在工作,但它首先发送表单,如果我刷新页面并再次发送相同的数据,它将进行验证。 为什么在发送之前不进行验证

我的代码:

<?php
include_once 'init.inc.php';

// database connection

error_reporting(E_ALL);

// function for Registration

function regUser($db)
{
 $password = password_hash($_POST['password3'], PASSWORD_BCRYPT);
 $sql = "INSERT INTO users SET username = '{$_POST['username']}', email = '{$_POST['email']}', password = '$password', laender = '{$_POST['selection']}'";
 $result = $db->query($sql);
 return $result;
}

// function for emailValidation

function emailValidate()
{
 $email1 = $_POST['email'];
 $email1 = filter_var($email1, FILTER_SANITIZE_EMAIL);
 if (!filter_var($email1, FILTER_VALIDATE_EMAIL))
 {
  return true;
 }
 else
 {
  return false;
 }
}

// function to check if username already registered

function usernameExists($db)
{
 $sql = "SELECT username FROM users WHERE username='" . $_POST['username'] . "'";
 $result = $db->query($sql);
 if (mysqli_num_rows($result) > 0)
 {
  return true;
 }
 else
 {
  return false;
 }
}

// function to check if email already exists in database

function emailExists($db)
{

 // var_dump(emailExists($db));

 $sql = "SELECT email FROM users WHERE email = '" . $_POST['email'] . "'";
 $result = $db->query($sql);
 if (mysqli_num_rows($result) > 0)
 {
  return true;
 }
 else
 {
  return false;
 }
}

// sending data to database

if (isset($_POST['submit']))
{

 // var_dump(usernameExists($db));
 // var_dump(emailExists($db));

 if (emailValidate() === false)
 {
 }
 else
 {
  echo 'Please enter a valid email adress';
 }

 if (usernameExists($db) === false && emailExists($db) === false)
 {
  regUser($db);
 }
 else
 {
  die("Username / Email already exists!");
 }
}
这样做:

if(emailValidate() === false){

}else {
    die( 'Please enter a valid email adress');//use die while not echo, otherwise the php will keep on running even the email is wrong

}
此外,您还可以执行以下操作:

if(emailValidate() !== false){
    die( 'Please enter a valid email adress');
}
这样做:

if(emailValidate() === false){

}else {
    die( 'Please enter a valid email adress');//use die while not echo, otherwise the php will keep on running even the email is wrong

}
此外,您还可以执行以下操作:

if(emailValidate() !== false){
    die( 'Please enter a valid email adress');
}

您可能需要重新订购一些条件检查代码,以便仅在电子邮件本身有效后检查数据库中是否存在电子邮件/用户名

if (isset($_POST['submit']))
{
    // email address is not valid, show error message
    if (emailValidate() !== false)
    {
        echo 'Please enter a valid email adress';
    }
    // email address is valid. Now check if it exists in the DB
    else
    {
        if ( (usernameExists($db) === false) && (emailExists($db) === false))
        {
            regUser($db);
        }
        else
        {
            // you can also use echo error in place of die() here
            die("Username / Email already exists!");
        } 
    }
}

您可能需要重新订购一些条件检查代码,以便仅在电子邮件本身有效后检查数据库中是否存在电子邮件/用户名

if (isset($_POST['submit']))
{
    // email address is not valid, show error message
    if (emailValidate() !== false)
    {
        echo 'Please enter a valid email adress';
    }
    // email address is valid. Now check if it exists in the DB
    else
    {
        if ( (usernameExists($db) === false) && (emailExists($db) === false))
        {
            regUser($db);
        }
        else
        {
            // you can also use echo error in place of die() here
            die("Username / Email already exists!");
        } 
    }
}

我在你的代码中看到了很多需要改进的地方,但是请告诉我。是否显示了任何错误?没有显示错误,验证很好,但只有在将其发送到数据库后,我才发现您的代码中有许多地方需要改进,但请告诉我。是否显示任何错误?没有显示任何错误,它验证良好,但只有在发送到数据库后,它才能与die()一起工作;但是,如何在电子邮件输入下直接以html显示错误?因为有了死亡();它将打开一个新页面:/it与die()一起工作;但是,如何在电子邮件输入下直接以html显示错误?因为有了死亡();它将打开一个新页面:/