2013-04-18 38 views
0

你好我有一個函數,用於檢查我的註冊細節在數據庫中是否不匹配,如果存在,則返回代碼。如何在函數處理後阻止返回(防止HTML未被加載)

但是每次我返回代碼時,我的HTML都不會加載,因爲它阻止它加載。 我希望HTML總是在PHP代碼之下,出於某些特定的原因(我想讓錯誤顯示在表單中,而不是在下面)。

這是我的函數的一個例子:

function check_available($name, $password, $email) 
{ 
    global $pdo; 

    $check_user = $pdo->prepare("SELECT * FROM users WHERE user_name = :username LIMIT 1"); 
    $check_user->execute(array(':username' => $name));   

    $check_email = $pdo->prepare("SELECT * FROM users WHERE user_email = :email LIMIT 1"); 
    $check_email->execute(array(':email' => $email)); 

    $error = ''; 
    if ($check_user->rowCount()) 
    { 
     $error .= 'Username already exists!'; 
     return handle_errors($error); 
    } 
    else if($check_email->rowCount() && !$check_user->rowCount()) 
    { 
     $error .= 'Email already exists!'; 
     return handle_errors($error); 
    } 
    else 
    { 
     return true; 
    } 
} 

    if (isset($_POST['submit'])) 
    { 
     $check_in = check_available($name, $password, $email); 


     if ($check_in == true) 
     { 
      echo 'Created account sucessfully!'; 
     } 
    } 
?> 
<html> 
<form action="register.php" method="POST"> 
Username: <input type="text" name="username"><br /> 
Password: <input type="password" name="password"><br /> 
Email: <input type="text" name="email"><br /> 
<input type="submit" name="submit"> 
</form> 
</html> 

submiting,(與具有已經在數據庫相匹配的用戶名)之後,將HTML將隱藏&錯誤顯示。

我該如何預防?有這個訣竅嗎?

+2

至少有人在使用PDO。 –

+0

PDO是管理數據庫的一個非常好的方法,我開始使用它不僅僅是因爲MySQL_ *已經過時,更容易管理多個查詢,連接,更安全並且更有意義。真的很愛PDO。 – user1761494

+0

我很激動http://images.t-nation.com/forum_images/1/5/15fc7_ORIG-the_rock_clap_clap_gif.gif –

回答

3

隱藏表單沒有意義。
恰恰相反,必須顯示錶單才能讓用戶輸入另一個名稱。

所以,只需添加一個錯誤輸出到您的形式 - 這就是你需要

編輯
看起來像它的handle_errors()函數來責備。

function reg_has_errors($name, $password, $email) 
{ 
    global $pdo; 

    $error = ''; 

    $sql = "SELECT 1 FROM users WHERE user_name = ? LIMIT 1"; 
    $stm = $pdo->prepare($sql); 
    $stm->execute(array($name));   
    if($stm->rowCount()) 
    { 
     $error .= 'Username already exists!'; 
    } 

    $sql = "SELECT * FROM users WHERE user_email = ? LIMIT 1"; 
    $stm = $pdo->prepare($sql); 
    $stm->execute(array($email));   
    if($stm->rowCount()) 
    { 
     $error .= 'Email already exists!'; 
    } 
    return $error; 
} 

$errors = ''; 
if (isset($_POST['submit'])) 
{ 
    $errors = reg_has_errors($name, $password, $email); 

    if (!$errors) 
    { 
     echo 'Created account sucessfully!'; 
    } 
} 
echo errors; 
+0

我不想隱藏我的表單,函數返回後; ,表單會隱藏起來,我想阻止這個! – user1761494

+0

也許你的代碼產生了一些祕密隱藏忍者的錯誤。 –

+0

另外,在你的聲明電話上試試看,也許它會告訴你榮耀的道路。 –