Оценка PHP, которая оценивает HTML & PHP

Пока Ваша установка PHP работает, как она должна, это не быть менее безопасной, чем какой-либо другой метод. Я предпочел бы, чтобы названная константа (определила) по переменной. Дополнительно Вы могли бы рассмотреть хранение хеша пароля вместо простого пароля. Это предотвращает кражу Ваших паролей, даже если сайт поставлен под угрозу.

Что касается того, чтобы быть плохой практикой, это зависит. Если необходимо сохранить всего один пароль, этот подход в порядке. Хранение их вне корня документа может дать ложное чувство дополнительной безопасности; корень документа является не более абсолютным, чем какая-либо другая установка сервера.

11
задан Matt 21 August 2009 в 02:34
поделиться

3 ответа

Use output buffering instead. eval() is notoriously slow.

main.php:

<div id="container">
    <div id="title"><?php echo $title; ?></div><!-- you must use PHP tags so the buffer knows to parse it as such -->
    <div id="head">
        <?php if ($id > 10): ?>
            <H3>Greater than 10!</H3>
        <?php else: ?>
            <H3>Less than 10!</H3>
        <?php endif ?>
    </div>
</div>

Your file:

$title = 'Lorem Ipsum';
$id = 11;

ob_start();
require_once('main.php');
$contents = ob_get_contents();
ob_end_clean();

echo $contents;

The output of this will be:

Lorem Ipsum

Greater than 10!

13
ответ дан 3 December 2019 в 00:50
поделиться

Do not read the file, but include it and use output bufferig to capture the outcome.

ob_start();
include 'main.php';
$content = ob_get_clean();

// process/modify/echo $content ...

Edit

Use a function to generate a new variable scope.

function render($script, array $vars = array())
{
    extract($vars);

    ob_start();
    include $script;
    return ob_get_clean();
}

$test = 'one';
echo render('foo.php', array('test' => 'two'));
echo $test; // is still 'one' ... render() has its own scope
2
ответ дан 3 December 2019 в 00:50
поделиться

Если вы пытаетесь сделать это со строкой смешанного HTML / PHP (например, из базы данных, Как и я), вы можете сделать это таким образом:

eval(' ?>'.$htmlandphp.'<?php ');

Подробнее: http://blog.5ubliminal.com/posts/eval-for-inline-php-inside-html/ (Примечание. Это мертвая связь с 2014-3-3)

39
ответ дан 3 December 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: