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显示错误?因为有了死亡();它将打开一个新页面:/