Php 验证时给出错误消息的最佳方法
我是一名新程序员,正在尝试对基本注册表进行验证。我已经建立了一个基本的注册表单,在提交时将用户发送回同一页面。我还创建了一个用户类,并创建了一些基本的验证函数。但是,这些函数内置了错误消息。很明显,我将函数放在注册表的顶部,因此当出现错误时,错误会被张贴在注册表上。但是,我无法控制错误消息的外观,我想知道是否有更好的方法可以从类外以某种方式回显错误消息,以便我可以使用某种类型的css或其他方法更好地控制它们的外观。我希望这是有道理的。此外,当出现错误时,用户将被发送回空注册表。我试图找出如何在文本框中保留有效信息,并让它们重做无效信息。下面是我所做的验证的一个基本示例。我知道它的基本原理,但我对编程非常陌生Php 验证时给出错误消息的最佳方法,php,Php,我是一名新程序员,正在尝试对基本注册表进行验证。我已经建立了一个基本的注册表单,在提交时将用户发送回同一页面。我还创建了一个用户类,并创建了一些基本的验证函数。但是,这些函数内置了错误消息。很明显,我将函数放在注册表的顶部,因此当出现错误时,错误会被张贴在注册表上。但是,我无法控制错误消息的外观,我想知道是否有更好的方法可以从类外以某种方式回显错误消息,以便我可以使用某种类型的css或其他方法更好地控制它们的外观。我希望这是有道理的。此外,当出现错误时,用户将被发送回空注册表。我试图找出如何在文
function validate_password($password)
{
$valid = TRUE;
if ($password == '')
{
echo "<p> Please enter a value for the password </p>";
$valid = FALSE;
}
elseif($_POST['pwd'] !== $_POST['pwd2'])
{
echo "The passwords do not match please try again";
$valid = FALSE;
}
return $valid;
}
函数验证密码($password)
{
$valid=TRUE;
如果($password=='')
{
echo“请输入密码值”;
$valid=FALSE;
}
elseif($_POST['pwd']!=$_POST['pwd2'])
{
回显“密码不匹配,请重试”;
$valid=FALSE;
}
返回$valid;
}
不要立即回显它们,而是将它们存储起来供以后使用。您提到这是在类中,因此可以使用类属性来保存错误消息
你的班级
{
公共错误
function validate_password($password)
{
$valid = TRUE;
if ($password == '')
{
// Set the error message
$this->error = "Please enter a value for the password";
$valid = FALSE;
}
// etc...
}
}
稍后,如果需要,您可以在HTML中输出:
if (!empty($yourclass->error)) {
echo "<p class='errmsg'>{$yourclass->error}</p>\n";
}
现在,如果您有了该功能,可以进一步扩展它,将$error
类属性放入一个数组中,并将多条消息推送到其中:
// In the class, initialize it as an array
$this->error = array();
// Use the [] notation to append messages to the array.
$this->error[] = "Another error message..."
$this->error[] = "And yet another error message..."
在演示代码中,使用循环输出消息:
// Output a big stack of error messages...
foreach ($yourclass->error as $err) {
echo "<p class='errmsg'>$err</p>\n";
}
//输出一大堆错误消息。。。
foreach($yourclass->error as$err){
echo“$err
\n”;
}
我通常对类及其错误执行的操作是使用一个专门针对错误的变量。
比如:
class User
{
private $_ValidationErrors = array();
function validate_password($password)
{
$this->_ValidationErrors = array();
$valid = TRUE;
if ($password == '')
{
$this->_ValidationErrors[] = "Please enter a value for the password";
$valid = FALSE;
}
elseif($_POST['pwd'] !== $_POST['pwd2'])
{
$this->_ValidationErrors[] = "The passwords do not match please try again";
$valid = FALSE;
}
return $valid;
}
function ValidationErrors ()
{
if (count($this->_ValidationErrors) == 0)
return FALSE;
return $this->_ValidationErrors;
}
}
<?php
if (isset($_POST["submit"]))
{
$user = new User();
$passwordErrors = (!$user->validate_password($_POST["pass1"]))?$user->ValidationErrors():array();
}
?>
<form action="<?php echo $_SERVER["php_self"]; ?>" method="post">
<input type="text" name="pass1" value="<?php echo htmlspecialchars($_POST["pass1"]); ?>" /><BR/>
<?php
echo ((isset($passwordErrors) && count($passwordErrors) == 0)?"":implode("<BR/>", $passwordErrors));
?>
<input type="submit" name="submit" value="Register" />
</form>
然后使用:
$user = new User();
if (!$user->validate_password('somepass'))
echo implode('<BR>',$user->ValidationErrors ());
$user=新用户();
如果(!$user->验证密码('somepass'))
echo内爆(“
”,$user->ValidationErrors());
编辑:显示用户的错误,如:
class User
{
private $_ValidationErrors = array();
function validate_password($password)
{
$this->_ValidationErrors = array();
$valid = TRUE;
if ($password == '')
{
$this->_ValidationErrors[] = "Please enter a value for the password";
$valid = FALSE;
}
elseif($_POST['pwd'] !== $_POST['pwd2'])
{
$this->_ValidationErrors[] = "The passwords do not match please try again";
$valid = FALSE;
}
return $valid;
}
function ValidationErrors ()
{
if (count($this->_ValidationErrors) == 0)
return FALSE;
return $this->_ValidationErrors;
}
}
<?php
if (isset($_POST["submit"]))
{
$user = new User();
$passwordErrors = (!$user->validate_password($_POST["pass1"]))?$user->ValidationErrors():array();
}
?>
<form action="<?php echo $_SERVER["php_self"]; ?>" method="post">
<input type="text" name="pass1" value="<?php echo htmlspecialchars($_POST["pass1"]); ?>" /><BR/>
<?php
echo ((isset($passwordErrors) && count($passwordErrors) == 0)?"":implode("<BR/>", $passwordErrors));
?>
<input type="submit" name="submit" value="Register" />
</form>
我的意思是,只有当出现错误时,它才会将用户发送回同一页面。如果不是的话,它会把它们发送到主页谢谢你,我一直在努力解决这个问题hours@Mike老师很乐意帮忙。请看我刚才添加的关于保留错误消息数组的内容。现在有没有办法让错误在无效框中明确显示?