PHP - 如何以体面的方式显示此服务器错误

时间:2010-08-07 05:02:50

标签: php

这是我的登录PHP代码。

<?php // rnlogin.php
include_once 'rnheader.php';
echo "<h3>Member Log in</h3>";
$error = $user = $pass = "";

if (isset($_POST['user']))
{
 $user = sanitizeString($_POST['user']);
 $pass = sanitizeString($_POST['pass']);

 if ($user == "" || $pass == "")
 {
  $error = "Not all fields were entered<br />";
 }
 else
 {
  $query = "SELECT user,pass FROM rnmembers
      WHERE user='$user' AND pass='$pass'";

  if (mysql_num_rows(queryMysql($query)) == 0)
  {
   $error = "Username/Password invalid<br />";
  }
  else
  {
   $_SESSION['user'] = $user;
   $_SESSION['pass'] = $pass;
   die("You are now logged in. Please
      <a href='rnmembers.php?view=$user'>click here</a>.");
  }
 }
}

echo <<<_END
<form method='post' action='rnlogin.php'>$error
Username <input type='text' maxlength='16' name='user'
 value='$user' /><br />
Password <input type='password' maxlength='16' name='pass'
 value='$pass' /><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<input type='submit' value='Login' />
</form>
_END;
?>

如您所见,错误消息打印为echo。 有没有办法可以将此错误消息放在控件中并仅在出现错误时显示它?

听起来我必须将PHP与JavaScript结合起来吗?

Gmail使用以下代码显示错误消息。 即使JavaScript已关闭,它也能正常工作。 换句话说,他们使用一些独立于JS的技术。

任何想法,我怎么能在这里做类似的事情?

<code>
                <td align="left">
                  <div id="errormsg_0_Passwd" class="errormsg">
                  The username or password you entered is incorrect.
                  [<a target="_blank" name="helpLink" href="http://www.google.com/support/accounts/bin/answer.py?answer=27444&amp;hl=en&amp;ctx=ch_ServiceLoginAuth&amp;p=mail">?</a>]
                  </div>
                  </td>
</code>

谢谢

2 个答案:

答案 0 :(得分:2)

  

有没有办法可以将此错误消息放入控件并仅在出现错误时显示?

在PHP中,你可以做任何事情。想将此错误消息放在控件中?把它控制住

if ($error) $error = "<control>$error</control>";

你必须区分字符串操作和回显 回显字符串不是字符串操作的唯一方法 你可以先准备好你的弦,然后再将它回响 因此,您可以先准备好字符串的所有部分,然后将它们一起打印出来。

此外,还有另一种输出HTML的方法,一种首选方式。

<?php
// your php code here
//before output we close PHP tag and use pure HTML
//with some PHP specks
?>

<form method="post" action="rnlogin.php">
<?php if($error): ?>
<code>
  <td align="left">
    <div id="errormsg_0_Passwd" class="errormsg">
      <?php echo $error ?>
    </div>
  </td>
</code>
<? endif ?>
Username <input type='text' maxlength='16' name='user'
 value='$user' /><br />
Password <input type='password' maxlength='16' name='pass'
 value='$pass' /><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<input type='submit' value='Login' />
</form>

答案 1 :(得分:0)

您的回答仍然存在于您的问题中!

你声明$error=""使用了这个,

像这样检查

if($error!="") echo $error; 

如果错误存在,我认为任何人都会这样做,那么其他人就会明白这一点。

为此您可能需要更改代码..

使用php标签制作html部分,然后在html部分内再次使用php标签并显示错误信息。

在我的观察中你还需要对html有点了解。