2017-04-07 46 views
0

所以我想創建一個登錄表單,現在我在我想驗證密碼和確認密碼的部分。我使用的代碼(你可以在下面找到它)顯示我每次提交註冊按鈕「密碼和確認密碼不匹配」,甚至認爲我輸入了相同的密碼。任何想法應該在我的代碼中更改以消除錯誤?在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 } 
    ?>` 
+0

這是爲什麼你寫了這一切,開始的第一個問題?這是一個學術項目嗎?這種代碼非常難以絕對完美,而且任何小於這些的代碼都會使您面臨嚴重的安全風險。 – tadman

+0

如果你想檢查所有字段進行驗證,所以不要使用其他情況下,如果單獨使用,如果爲每個字段,因爲在你的其他情況下,如果第一個情況符合true,那麼所有下面的其他情況下,如果不會遇到執行 –

+1

問題在這裏。仔細地看。 $ _POST ['[password']!= $ _POST ['confirm_password'] –

回答

2

你只是有一點點錯字:

代替$_POST['[password']使用$_POST['password']

+0

這是一個問題。 – tadman

+0

@tadman第二? – WasteD

+0

這段代碼有一堆紅旗。在問題過於具體之前,我在問是什麼意圖。 – tadman