Эхо <div class> не работает при использовании PHP die();
Итак, у меня есть форма, в которой есть несколько пользовательских предупреждений, созданных в сочетании с 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();
}
Поэтому в основном я добавил только таблицу стилей перед оповещением, чтобы сделать оповещение стилевым.
2 ответа
Для того, чтобы это работало с методом, который вы используете в настоящее время, вам нужно иметь ваш HTML поверх PHP.
Я проверил это с обоими exit('<div class="alert">Passwords do not match!</div>');
а также die('<div class="alert">Passwords do not match!</div>');
<!DOCTYPE html>
<head>
<style>
.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;
}
</style>
</head>
<?php
$pass1="2"; // my own test variable
$pass2="3"; // my own test variable
if($pass1 != $pass2){
exit('<div class="alert">Passwords do not match!</div>');
// die('<div class="alert">Passwords do not match!</div>');
echo "Hello there"; // Will not echo
}
?>
Вы можете сделать это таким образом, используя дополнительный условный оператор вместо того, чтобы убить скрипт:
<?php
$pass1="2"; // my own test variable
$pass2="3"; // my own test variable
$var = "<div class=\"alert\">Passwords do not match!</div>";
if($pass1 != $pass2){
echo $var;
}
else{
echo "You have access.";
}
?>
<!DOCTYPE html>
<head>
<style>
.alert {
font-family:Georgia;
color:#ffff00;
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;
}
</style>
</head>
Скорее всего, ваш CSS-файл будет добавлен позже в коде. При выполнении кубика (); Заявление php остановит всю дальнейшую обработку. Эффективно, не повторяя таблицы стилей.
Если вы посмотрите на источник "пустой страницы", то увидите, что она содержит:
'<div class="alert">Passwords do not match!</div>'