我想用我的註冊頁面上的電子郵件驗證,但if(filter_var($_POST['Email'], FILTER_VALIDATE_EMAIL) !== false)
始終,即使是合法的電子郵件地址,如返回false:[email protected]
PHP代碼:
<?php require 'Assets/Connections/Connections.php';
session_start();
if(isset($_POST['Register']))
{
//whether the firstname is blank
if ($_POST['First_Name'] == '')
{
$_SESSION['First_NameErr'] = "First Name is required.";
}
//whether the lastname is blank
if ($_POST['Last_Name'] == '')
{
$_SESSION['Last_NameErr'] = "Last Name is required.";
}
//whether the email is blank
if($_POST['Email'] == '')
{
$_SESSION['EmailErr1'] = "E-mail is required.";
}
else
{
//whether the email format is correct
if(filter_var($_POST['Email'], FILTER_VALIDATE_EMAIL) !== false)
{
// Return Success - Valid Email
$Email = mysqli_real_escape_string($con, $_POST['Email']);
$sql1 = "SELECT * FROM user
WHERE email = '$Email'";
$result1 = mysqli_query($con, $sql1)
or die(mysqli_error());
if (mysqli_num_rows($result1) > 0)
{
$_SESSION['EmailErr2'] = "This Email is already used.";
}
}
else
{
// Return Error - Invalid Email
$_SESSION['EmailErr3'] = "Your email is not valid.";
}
}
//whether the password is blank
if($_POST['Password'] == '')
{
$_SESSION['PasswordErr'] = "Password is required.";
}
//if an error is created, the user is re-directed to a blank registration form
if(isset($_SESSION['First_NameErr']) || isset($_SESSION['Last_NameErr']) || isset($_SESSION['EmailErr1']) || isset($_SESSION['EmailErr2']) || isset($_SESSION['EmailErr3']) || isset($_SESSION['PasswordErr']))
{
echo "Error";
var_dump(filter_var($_POST['Email'], FILTER_VALIDATE_EMAIL));
#header("Location: Register.php");
#exit;
}
else
{
$FName = mysqli_real_escape_string($con, $_POST['First_Name']);
$LName = mysqli_real_escape_string($con, $_POST['Last_Name']);
$Email = mysqli_real_escape_string($con, $_POST['Email']);
$PW = mysqli_real_escape_string($con, $_POST['Password']);
$StorePassword = password_hash($PW, PASSWORD_BCRYPT, array('cost' => 10));
$sql = $con->query("INSERT INTO user (Fname, Lname, Email, Password)
Values('$FName', '$LName', '$Email', '$StorePassword')")
or die(mysqli_error());
header('Location: LogIn.php');
die();
}
}
?>
HTML表單:
<!doctype html>
<html>
<head>
<link href="Assets/CSS/Master.css" rel="stylesheet" type="text/css" />
<link href="Assets/CSS/Menu.css" rel="stylesheet" type="text/css" />
<meta charset="utf-8">
<title>Register</title>
</head>
<body>
<div class="Container">
<div class="Header"></div>
<div class="Menu">
<div id="Menu">
<nav>
<ul class="cssmenu">
<li><a href="FrontPage.php">Home</a></li>
<li><a href="Register.php">Register</a></li>
<li><a href="LogIn.php">LogIn</a></li>
</ul>
</nav>
</div>
</div>
<div class="CentreBody">
<form id="RegisterForm" name="RegisterForm" method="post">
<div class="FormElement">
<input type="text" name="First_Name" required="required" class="TField" id="First_Name" placeholder="First Name">
</div>
<div class="FormElement">
<input type="text" name="Last_Name" required="required" class="TField" id="Last_Name" placeholder="Last Name">
</div>
<div class="FormElement">
<input type="email" name="Email" required="required" class="TField" id="Email" placeholder="Email">
</div>
<div class="FormElement">
<input type="password" name="Password" required="required" class="TField" id="Password" placeholder="Password">
</div>
<div class="FormElement">
<input type="submit" name="Register" class="button" id="Register" value="Register">
</div>
</form>
</div>
<div class="Footer"></div>
</div>
</body>
</html>
嘗試微調'$ _ POST [ '電子郵件']'測試,如'filter_var期間(修剪($ _ POST [ '電子郵件'] L),FILTER_VALIDATE_EMAIL);' –
做'回聲$ _ POST ['電子郵件'];'看看它顯示的是什麼 –
檢查錯誤。我們不知道HTML表單是什麼樣子的,或者是否開始了會話。 –