Эхо-блок HTML, содержащий функции PHP
Вопрос
У меня есть простое утверждение if-else - если true, я бы хотел, чтобы оно повторяло этот контент:
<div id="login">
<h2>Login</h2>
<div class="box">
<form method="POST" action="index.php/login">
Username/Email:<br />
<input type="text" name="username" value="<?php echo set_value("username"); ?>" size="50" class="form" />
<?php echo form_error("username"); ?>
Password:<br />
<input type="password" name="password" value="<?php echo set_value("password"); ?>" size="50" class="form" />
<?php echo form_error("password"); ?>
<input type="submit" value="Login" name="login" />
</form>
</div>
</div>
и если false, сделайте что-то подобное.
Как мне следует подойти к этому?Я новичок в PHP (и я раздражаю сообщество здесь!) - так что я стою на функции echo прямо сейчас - я думаю, что могу устанавливать переменные, но не более того.
Большое спасибо!
Решение
То же самое, что делали вы:
<?php
if some_condition
{
?>
<p> I am inside the true condition due : <?php echo "true on condition" ?> </p>
<?
}
else
{
?>
<p> I am inside the false condition due : <?php echo "false on condition" ?> </p>
<?
}
?>
Другие советы
Вы можете просто выйти из PHP с помощью инструкции if/else .
if(true)
{
?>
Regular HTML Here
<?php
}
else
{
?>
Regular HTML Here
<?php
}
Вы можете выйти из PHP в любое время, используя оператор '?>', и с любой структурой управления он должен отображать код так же, как если бы вы повторили его.Другим вариантом было бы использовать буферизацию вывода.
if(true)
{
ob_start();
?>
Regular Code Here
<?php
$contents = ob_get_contents();
ob_end_clean();
}
Это оставит содержимое того, что было выведено между началом и концом, в $contents.
Наконец, вы могли бы использовать функцию include(), чтобы включать вашу форму входа только тогда, когда она вам действительно нужна.(Я предпочитаю этот метод, потому что я могу очень легко разместить формы входа практически в любом месте сайта)
if(true)
{
include('loginform.php');
}
<?php if ($condition) { ?>
<div id="login">
<h2>Login</h2>
<div class="box">
<form method="POST" action="index.php/login">
Username/Email:<br />
<input type="text" name="username" value="<?php echo set_value("username"); ?>" size="50" class="form" />
<?php echo form_error("username"); ?>
Password:<br />
<input type="password" name="password" value="<?php echo set_value("password"); ?>" size="50" class="form" />
<?php echo form_error("password"); ?>
<input type="submit" value="Login" name="login" />
</form>
</div>
</div>
<?php } else { ?>
other html here
<?php } ?>
Просто предложение;для удобства чтения и простоты гибкости лучше сначала поместить то, что вы хотите отобразить, внутри переменной.
$html = "<form method='post' action='?'> ...... ";
if ($condition)
$html .= "Error"
else
$html .= "No problem"
....
<html>
<body>
<?php
echo $html;
?>
</body>
</html>
Или вы можете использовать шаблон.Один из них, который я бы порекомендовал, это Простая шаблон.
существует форма php conditional, которая несколько проще для чтения для этого, использует обозначение двоеточия, поэтому вместо
<?php if ($condition) { ?>
...html
<?php } else { ?>
...html
<?php } endif; ?>
ты делаешь
<?php if ($condition) : ?>
...html
<?php else : ?>
...html
<?php endif; ?>
также, если ваша конфигурация позволяет это, вы можете сокращать
<?= $variable ?>
вместо того , чтобы
<?php echo($variable); ?>
Отказ от php - самый простой способ сделать это.Я нахожу, что, используя альтернативные структуры управления делает такой код намного более читабельным, чем скрученные фигурные скобки, особенно если у вас много html.
<?php if (!$logged_in): ?>
<div id="login">
<h2>Login</h2>
<div class="box">
<form method="POST" action="index.php/login">
Username/Email:<br />
<input type="text" name="username" value="<?php echo set_value("username"); ?>" size="50" class="form" />
<?php echo form_error("username"); ?>
Password:<br />
<input type="password" name="password" value="<?php echo set_value("password"); ?>" size="50" class="form" />
<?php echo form_error("password"); ?>
<input type="submit" value="Login" name="login" />
</form>
</div>
</div>
<?php else: ?>
// display html for a logged-in user
<?php endif; ?>
Используйте что-то вроде этого
echo htmlentities($строка);
Установите строку в html-код, который вы хотите вывести.