Вопрос

У меня есть простое утверждение 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ентичности

Установите строку в html-код, который вы хотите вывести.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top