所以我想創建一個登錄表單,現在我在我想驗證密碼和確認密碼的部分。我使用的代碼(你可以在下面找到它)顯示我每次提交註冊按鈕「密碼和確認密碼不匹配」,甚至認爲我輸入了相同的密碼。任何想法應該在我的代碼中更改以消除錯誤?在PHP驗證密碼和確認密碼錯誤顯示所有時間
<?php
session_start();
include('includes/config.php');
include('includes/db.php');
function isUnique($email){
$query="select * from users where email ='$email'";
global $db;
$result = $db->query($query);
if($result->num_rows>0){
return false;
}
else return true;
}
if(isset($_POST['register'])) {
$_SESSION['name']=$_POST ['name'];
$_SESSION['email']=$_POST ['email'];
$_SESSION['password']=$_POST ['password'];
$_SESSION['confirm_password']=$_POST ['confirm_password'];
if(strlen($_POST['name'])<3){
header("Location:register.php?err=".urlencode ("The name must be at least 3 characters long"));
exit();
}
else if(strlen($_POST['password']) < 5){
header("Location:register.php?err=".urlencode ("The password should be at least 5 characters"));
exit();
}
else if(strlen($_POST['confirm_password']) < 5){
header("Location:register.php?err=".urlencode ("The Confirm password should be at least 5 characters"));
exit();
}
else if(!isUnique($_POST['email'])){
header("location:register.php?err=".urlencode ("Email is already in use. Please use another one"));
exit();
}
else if($_POST['[password'] != $_POST['confirm_password']) {
header("Location:register.php?err=".urlencode ("The password and confirm password do not match"));
exit();
}
}
?>
這裏是另一部分,我把條件當錯誤味精應該顯示。
`<form action="register.php" method="post" style="margin-top:35px;">
<h2> Register Here </h2>
<?php
if(isset ($_GET['err'])) { ?>
<div class="alert alert-danger"><?php echo $_GET['err']; ?></div>
<?php }
?>`
這是爲什麼你寫了這一切,開始的第一個問題?這是一個學術項目嗎?這種代碼非常難以絕對完美,而且任何小於這些的代碼都會使您面臨嚴重的安全風險。 – tadman
如果你想檢查所有字段進行驗證,所以不要使用其他情況下,如果單獨使用,如果爲每個字段,因爲在你的其他情況下,如果第一個情況符合true,那麼所有下面的其他情況下,如果不會遇到執行 –
問題在這裏。仔細地看。 $ _POST ['[password']!= $ _POST ['confirm_password'] –