2012-06-14 130 views
0

我看不出爲什麼變量$errorMessage不會設置數組錯誤。PHP不會顯示我的表單驗證錯誤消息

我正在嘗試進行表單驗證。此PHP全部位於頁面頂部register.php

這是我正在嘗試工作的頁面。我希望我能解決這個問題!

<?php 
    session_start(); 
    // include("includes/connect.php"); 
    include ("includes/html.php"); 


    if (isset($_POST['submit'])){ 
     $error = array(); 

     //username 
     if (empty($_POST['username'])){ 
     $error[] = 'Please Enter a Username'; 
     } 
     else if (ctype_alnum ($_POST['username'])){ 
     $userName = $_POST['username']; 
     } 
     else { 
     $error[] = 'Username Must Consist Letters and Numbers Only'; 
     } 

     //email 
     if (empty($_POST['email'])){ 
     $error[] = 'Please Enter an Email'; 
     } 
     else if (!preg_mach ("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+) 
↪*(\.[a-z]{2,3})$",$_POST['email'])) { 
     $email = mysql_real_escape_string ($_POST['username']); 
     } 
     else { 
     $error[] = 'Your Email Address is Invalid'; 
     } 

     //password 
     if (empty($_POST['password'])){ 
     $error[] = 'Please Enter a password'; 
     } 
     else if ($_POST['password']!==$_POST['password2']){ 
     $error[] = 'Your Password Did Not Match'; 
     } 
     else { 
     $password = mysql_real_escape_string($_post['password']); 
     } 
    } 

    if (empty ($error)){ 
     //good info 
    } 
    else { 
     $errorMessage = '<span class="error">'; 
     foreach ($error as $key => $e){ 
     $errorMessage.= "$e"; 
     } 
     $errorMessage.= '</span> <br /><br />'; 
    } 

?> 
+0

不是一個答案,但是這是一個相當[弱電子郵件驗證(http://php.net/manual/en/ function.filter-var.php)。 – PeeHaa

+0

你在哪裏打印'$ errorMessage'變量? – shadyyx

+0

無論如何,你可以用一個更漂亮的方式做到這一點:'$ errorMessage =''。 implode('
',$ error)。 '


'; echo $ errorMessage;'。 – shadyyx

回答

2

$error數組被索引,所以你應該使用:

foreach ($error as $e){ 

} 
+0

是的,你是對的。我猜我做了太多的OOP;)。我檢查了你的答案,這是正確的+1。 – Zbigniew

0

因爲你檢查是否錯誤數組爲空。如果有任何錯誤消息,它將不會爲空,您將跳過整個消息構建塊。

if (!empty ($error)){ 
    ^---- if NOT EMPTY 
+0

在他的代碼中有if-else:如果錯誤爲空 - 不顯示錯誤,則以其他方式顯示所有錯誤。我沒有看到錯誤 – DaneSoul

+0

Shees,完全錯過了。我討厭那樣的空塊... –