【发布时间】:2014-03-14 07:04:13
【问题描述】:
所以我有一个表单,其中包含一些在 CSS 和 PHP 中组合创建的自定义警报,现在我使用 echo 调用这些警报,并在最后使用 die() 来终止/结束 PHP 脚本。这是PHP代码:
if($pass1 != $pass2){
echo '<div class="alert">Passwords do not match!</div>';
die();
}
这里是 CSS:
.alert {
background: #fff6bf url(../images/exclamation.png) center no-repeat;
background-position: 15px 50%;
text-align: center;
padding: 5px 20px 5px 45px;
border-top: 2px solid #ffd324;
border-bottom: 2px solid #ffd324;
}
问题是当脚本在没有 die() 的情况下执行时,CSS 会正确显示错误。当 die() 被实现时,代码会显示一个空白页,上面写着“密码不匹配!”没有任何造型。
我可以做些什么来杀死 PHP 脚本但仍然有样式?
解决方案:
因此,在看到答案并意识到此时死亡会杀死整个站点之后。我在代码中添加了一行简单的代码:
之前:
if($pass1 != $pass2){
echo '<div class="alert">Passwords do not match!</div>';
die();
}
之后:
if($pass1 != $pass2){
echo '<link rel="stylesheet" type="text/css" href="css/structure.css">';
echo '<div class="alert">Passwords do not match!</div>';
die();
}
所以基本上我只在警报之前附加了样式表,以使警报具有样式。
【问题讨论】:
-
当你使用 die();它会导致页面在您所在的位置停止渲染。因此,如果您的 HTML 没有完成并且您“死亡”,那么它就无法呈现。例如,如果您的 css 在您死之前不在页面上,则 css 无法显示。您可以通过查看源代码来检查这一点
-
你真的不应该使用
die()或者只是退出生产中的脚本。这听起来更像是一个程序设计问题。 -
将错误消息存储到变量中。稍后,如果变量非空(发生错误),则显示它而不是执行在非错误状态下会发生的任何其他事情。不要突然
die(),停止你的脚本。 -
为了让它工作,你需要在 PHP 之上有你的 HTML。我用
exit('<div class="alert">Passwords do not match!</div>');和die('<div class="alert">Passwords do not match!</div>');测试了这个