2011-08-11 85 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中进行了一些扩展研究,您将获得很多收获。