2011-08-11 44 views
0

我有下面的PHP代碼:顯示位置的PHP錯誤。

  if($_SESSION['msg']['login-err']) 
      { 
       echo '<p class="error">'.$_SESSION['msg']['login-err'].'</p>'; 
       unset($_SESSION['msg']['login-err']); 
      } 

一切工作正常。錯誤「P」在元素內正確顯示。

我的問題是如何指定我的錯誤應顯示在哪裏?

E.G. 不作爲表單內的第一個元素,但

  • 作爲第二例如
  • 只是<input name="user" />

之前??

任何建議非常感謝。

回答

2

由於您(有點天真地)測試錯誤並同時顯示錯誤,您應該將代碼移動到頁面的較低位置,以便測試/輸出發生在您希望顯示的位置。

理想情況下,您應該從您的邏輯中分離顯示代碼。存儲您的錯誤,以便以後顯示在傳遞到要呈現的模板的$errors變量中。

+0

這正是我正在做的 - 在代碼中粘貼只是它的一小部分。我知道移動代碼將是最簡單的 - 但是有沒有更多的編程方法可以做到這一點? – Iladarsda

+0

「更多編程」方式將是我提到的第二段:從您的控制器邏輯中提取您的表示邏輯。將業務邏輯提煉爲模型。閱讀MVC體系結構。 – meagar

+0

在目前使用的方法的任何安全問題?或者只是糟糕的編程? – Iladarsda

1

而不是將它現在存在的回聲,爲什麼不更改您的代碼是這樣的:

$error; 
if($_SESSION['msg']['login-err']) 
{ 
    $error = $_SESSION['msg']['login-err']; 
    unset($_SESSION['msg']['login-err']); 
} 

然後,就在您輸入的標籤上面,做這樣的事情......

<?php echo $error;?> 

這不是執行錯誤處理的最佳方法......但它應該執行你所要求的。

1

「哪裏」取決於你的前端設計。

在登錄表單中,我會建議在整個表單的頂部或底部顯示錯誤。在聯繫人/註冊表單中,在字段旁邊顯示錯誤更有意義(位於頂部或左側)。

完全不同的是邏輯和演示的組合。他們應該分開,因爲每個代碼應該只有一個理由來更改。你的作品有兩個原因:設計或邏輯。

如果您在MVC和OOP中進行了一些擴展研究,您將獲得很多收穫。