Как я могу выйти из php при ошибке с помощью специального сообщения HTML - PullRequest
0 голосов
/ 05 января 2019

Мне интересно, как лучше всего выйти из php-скрипта (если я столкнусь с ошибкой), где я также включил бы весь свой html-код. В настоящее время мой сценарий:

<?php

    // Some other code here

    // These if statements are my error handling
    if(!isset($var)) {
        $message = 'Var is not set'
        exit('<title>Error Page</title>'.$message.'<footer>Test Footer</foot>');
    }

    if($a != $b) {
        $message = 'a is not equal to b';
        exit('<title>Error Page</title>'.$message.'<footer>Test Footer</foot>');
    }

    $success = 'YAY, we made it to the end';
?>

<html>
    <header>
        <title>YAY</title>
        <!-- Other stuff here -->
    </header>
    <!-- Other stuff here -->
    <body>
    <!-- Other stuff here -->
    <?php echo $success ?>
    <!-- Other stuff here -->
    </body>
    <!-- Other stuff here -->
    <footer>The best footer</footer>
</html>

Вы можете видеть, что мое сообщение о выходе имеет плохой стиль (так как я собираю все свои html там). Есть ли способ, где я могу иметь хорошую страницу ошибки HTML, чтобы показать с пользовательским сообщением.

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Вы можете создать html-страницу с шаблоном, а затем использовать функцию str_replace для замены ключевого слова на html-странице. В этом случае слово, которое мы заменяем на ваше сообщение об ошибке: {message}.

error_page_template.html

<!DOCTYPE html>
<html>
    <head>
        <title>Error Page</title>
    </head>
    <body>

        {message}

    </body>
</html>

script.php

<?php

    function error_page($message) {
        $htmlTemplate = file_get_contents('error_page_template.html');
        $errorPage = str_replace('{message}', $message, $htmlTemplate);
        return $errorPage;
    }

    echo error_page('An error has occurred');
?>
0 голосов
/ 05 января 2019

Здесь я ссылаюсь на другой файл при сбое скрипта, который принимает ваше определенное сообщение и печатает его как чистый HTML5, который может быть стилем по желанию.

Я думаю, что это ваш лучший вариант (скрипт использует файл, который вы должны включить при ошибке):

<?php
//On failure (this is the error)
$message = 'Error message';
//I can use a variable inside double quotes because they do not take the string
//literally, if it were single quotes it would take the string as a literal and it
//would print $message as $message
//The `die()` function kills the script and executes whatever you put inside of it.

die(require "e_include.php");
?>

Тогда есть другой файл (который связан с):

<!DOCTYPE html>
<html>
<head>
    <title>YAY</title>
    <meta charset="utf-8">
</head>
<body>
    <p><?php echo $message ?></p>
</body>
</html>
...