2012-01-13 41 views
-1

當腳本碰到一系列檢查電子郵件和密碼長度的「if」語句時,該腳本似乎掛起。如果我刪除這些語句,它會正確地將數據插入到數據庫中。使用我的PHP註冊腳本時遇到困難

<?php 

ob_start(); 
session_start(); 

if (!empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['confirmpassword'])) { 

$email = strip_tags($_POST['email']); 
$password = md5(strip_tags($_POST['password'])); 
$confirmpassword = md5(strip_tags($_POST['confirmpassword'])); 

$errors = array(); 

if (strlen($email) < 6) { 
    $errors[] = "Email too short."; 
} 
if (strlen($email) > 25) { 
    $errors[] = "Email too long."; 
} 
if (strlen($password) < 2) { 
    $errors[] = "Password too short."; 
} 
if (strlen($password) > 25) { 
    $errors[] = "Password too short."; 
} 
if ($password !== $confirmpassword) { 
    $errors[] = "Passwords do not match."; 
} 

if (count($errors) == 0) { 
    // Include database config file then connect to database 
    require('db_config.php'); 
    $connection = mysql_connect(DB_HOST,DB_USERNAME,DB_PASSWORD) or die("Database Connection Error"); 
    $database = mysql_select_db(DB_NAME) or die("No Database"); 

    // Create query 
    $query = "INSERT INTO bah_register VALUES ('','$email','$password')"; 

    // Query database and 
    mysql_query($query); 

    // Success message 
    echo "Thanks for signing up!"; 

} else { 
    foreach ($errors as $error) { 
     echo $error . "<br />"; 
    } 
} 
} 

?> 
+0

什麼是錯誤,我們不能幫你沒有錯誤 – 2012-01-13 21:07:07

+0

什麼是不正常工作? – jprofitt 2012-01-13 21:07:15

+0

是否存在產生的特定錯誤?什麼工作不正常? – dm03514 2012-01-13 21:07:16

回答

5

在檢查長度之前,您的問題是您的密碼是md5。這將密碼設置爲32個字符,該字符大於您的限制併產生錯誤。

+0

:) +1。是的,幾乎在同一時間 – a1ex07 2012-01-13 21:18:55

+0

@ a1ex07是的,我認爲我們只相隔4秒。哈哈〜 – James 2012-01-13 21:20:53

+0

@詹姆斯 - 謝謝!新手上的錯誤:) – 2012-01-13 21:52:45

3

我不知道什麼是你的代碼錯誤,但對你的電子郵件,你可能會考慮使用這樣的事情:

if(!preg_match('/^[^@][email protected][a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email)){ 
    $errors[] = "Email is not valid."; 
} 

許多電子郵件是長於25個字符。

5

您正在檢查strlen($password) > 25,並且您的密碼是md5超過25個符號的hashsum。你可能想檢查密碼的原始值

+0

幾乎擊敗你。 ; P – James 2012-01-13 21:17:51

+0

@ a1ex07謝謝! – 2012-01-13 21:53:07

2

與錯誤數組中的foreach可以伊斯利可以用下面的代碼

用strip_tags功能 echo implode('<br />', $errors);

正確的電子郵件驗證可以與filter_var函數來完成更換可能會對密碼產生不良影響,可能會將其中的部分內容刪除。想想以下密碼:«<我的>超級!密碼»