如何让PHP打印内联错误而不是更改整个页面?打印内联PHP错误而不是擦除整个页面
我希望它的目标是#errors
,并填充它而不是改变一切。
我目前使用的代码是die ("Incorrect username or password.");
我很新的PHP很抱歉,如果这是一个非常容易的事。
如何让PHP打印内联错误而不是更改整个页面?打印内联PHP错误而不是擦除整个页面
我希望它的目标是#errors
,并填充它而不是改变一切。
我目前使用的代码是die ("Incorrect username or password.");
我很新的PHP很抱歉,如果这是一个非常容易的事。
把错误放在一个变量中,你做你的逻辑并在#errors中打印它的内容。例如:
if (username_is_incorrect()) $error = 'Incorrect username or password.';
而在HTML
<?php if (isset($error)):?><div id="errors"><?=$error?></div><?php endif;?>
有做这件事的2种方式。
真正的内联方法并不完全基于PHP,因为它不能在没有JavaScript和AJAX调用的情况下使用。
请注意这种方法令人讨厌的缺点:最后需要在收到表单数据时再次检查每个字段。
另一个将重新加载您的页面,但它将与所有表单域,输入数据和新鲜生成的错误消息是相同的页面。这就是所谓的POST/Redirect/GET模式
这里,而在你有你的表单字段form.tpl.php文件,输入的数值和错误消息的条件输出一个简单的例子
<?
if ($_SERVER['REQUEST_METHOD']=='POST') {
$err = array();
//performing all validations and raising corresponding errors
if (empty($_POST['name']) $err[] = "Username field is required";
if (empty($_POST['text']) $err[] = "Comments field is required";
if (!$err) {
// if no errors - saving data
// and then redirect:
header("Location: ".$_SERVER['PHP_SELF']);
exit;
} else {
// all field values should be escaped according to HTML standard
foreach ($_POST as $key => $val) {
$form[$key] = htmlspecialchars($val);
}
} else {
$form['name'] = $form['comments'] = '';
}
include 'form.tpl.php';
?>
<? if ($err): ?>
<? foreach($err as $e): ?>
<div class="err"><?=$e?></div>
<? endforeach ?>
<? endif ?>
<form>
<input type="text" name="name" value="<?=$form['name']?>">
<textarea name="comments"><?=$form['comments']?></textarea>
<input type="submit">
</form>