2014-01-27 61 views
-1

我試圖驗證表單使用服務器端,但問題是,我無法顯示錯誤消息和輸入。爲了解釋它的細節:PHP表單驗證服務器端,在頁面上顯示錯誤,在其他頁面上顯示輸出

  • 有可以發佈的輸入
  • 驗證的數據,例如一個形式,。如果網頁上的空白,顯示錯誤,否則進入到目標頁面

表單頁面,這是我驗證和顯示

<?php 

    ?> 
<?=$firstErr?> 
<form method="POST" action=""> 
<input type="text" name="firstname" /> 

<input type="text" name="secondname" > 
<input type="submit" name="submit" > 
</form> 

目標頁面

if(isset($_POST['submit'])) 
{ 
    $first = $_POST['firstname']; 
    $second = $_POST['secondname']; 

    if($first == "" && $second== "") 
    { 

     echo "<script language='javascript'>window.location = 'main.php';</script>"; 
     $firstErr .= '<p class="error">Username should be alpha numeric characters only.</p>'; 
    } 

    else 
    { 
     echo $first; 
     echo $second; 
    } 
} 
+0

爲什麼你不希望顯示錯誤住在同一頁上?你現在正在做一個重定向到main.php,這當然不會顯示$ firstErr的錯誤消息,正如你可能期望的那樣。 – heximal

+0

我需要的只是顯示錯誤,如在同一頁面上該字段爲空,但如果沒有錯誤,則會轉到輸出頁面。 – user2901740

回答

0

這是因爲你已經被重定向到行執行之前的頁面。

請添加像這樣的提醒。

if($first == "" && $second== "") 
    { 
     echo "<script>alert('Username should be alpha numeric characters only.');</script>"; //<-- Added here 
     echo "<script language='javascript'>window.location = 'main.php';</script>"; 
    } 
+0

警報是一種方式,但我需要的是在輸入文本框旁邊顯示錯誤消息。 – user2901740

0

當你需要返回到main.php時,JavaScript只是加載該頁面。

據我所知,您必須實施某種檢查方法,將會將錯誤代碼存儲在會話或cookie中,然後編寫一個檢查以在出現錯誤時顯示消息。一旦加載main.php,您將不得不清除保存的錯誤。 或者你可以通過修改你的javascript來通過$ _GET傳遞錯誤消息。

您的JavaScript可能看起來像

window.location = "main.php?err=1"; 

您可以將main.php設置爲

if(isset($_GET['err'])) { 
     //Your logic to check the error message number and display text goes here 
    } 

理想的情況是使用JavaScript/jQuery的在客戶端驗證,但是既然你提到這做一個服務器端驗證,你將不得不使用一個擁有所有爲這種表單驗證奠定了基礎的框架(使用框架有很多優點和缺點,所以我不確定這對你是否可行,只要把它放在那裏) ,或者編寫你自己的小邏輯來檢查並用錯誤代碼恢復到主頁面。

0

這是因爲重定向發生並且PHP未執行。你可以做的是在你的重定向中設置一個GET參數。

echo "<script language='javascript'>window.location = 'main.php?error=1';</script>"; 

而且在main.php

if(isset($_GET['error']) && $_GET['error'] == 1) { do code ... } 
+0

我測試了這個,當我不小心點擊了提交按鈕時,?error = 1改成了頁面名稱,我不知道問題是由於在表單中添加action =「somepage.php」引起的 – user2901740

相關問題