Pergunta

Eu tenho um simples if-else - se for verdade, eu gostaria que a ecoar este conteúdo:

<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>

e se fazer algo falso similar.

Como devo abordar isso? Eu sou um noob PHP (e eu fui chato a comunidade aqui!) - então eu estou de pé na função echo agora -. Eu acho que pode definir variáveis, mas que é sobre ele

Muito obrigado!

Foi útil?

Solução

Mesma coisa que você tem feito:


<?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>
<?
}
?>

Outras dicas

Você pode simplesmente sair de PHP no if / else.

if(true)
{
    ?>
    Regular HTML Here
    <?php
}
else
{
    ?>
    Regular HTML Here
    <?php
}

Você pode sair de PHP a qualquer momento usando o '?>' Operador e com qualquer estrutura de controle, ele deve mostrar o código como se você echo'd-lo. Outra opção seria usar o buffer de saída.

if(true)
    {
        ob_start();

        ?>
        Regular Code Here
        <?php

        $contents = ob_get_contents();
        ob_end_clean();
    }

Isso vai deixar o conteúdo do que emitido entre o início e fim em $ conteúdo.

Finalmente, você poderia usar um include () para incluir apenas o seu formulário de login quando você realmente precisa dele. (Eu prefiro este método porque eu posso colocar formulários de login em quase qualquer lugar no site com muita facilidade)

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 } ?>

Apenas uma sugestão; para facilitar a leitura e facilidade de flexibilidade, é melhor colocar o que você deseja exibir dentro de uma variável pela primeira vez.

$html = "<form method='post' action='?'> ...... ";

if ($condition)
   $html .= "Error"
else
   $html .= "No problem"
....

<html>
  <body>
    <?php
      echo $html;
    ?>
   </body>
</html>

Ou você pode usar um modelo. Um que eu recomendo é EasyTemplate .

há uma forma de php condicional que é um pouco mais fácil de ler para isso, usa a notação de cólon então ao invés de

<?php if ($condition) { ?>
...html
<?php } else { ?>
...html
<?php } endif; ?>

você

<?php if ($condition) : ?>
...html
<?php else : ?>
...html
<?php endif; ?>

Além disso, se sua configuração permite que ele, você pode atalho

<?= $variable ?>

em vez de

<?php echo($variable); ?>

abandono do php é a maneira mais fácil de fazer isso. Acho que usando os estruturas de controle alternativos torna este tipo de código muito mais legível do que encalhado chaves, especialmente se você tem um monte de 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; ?>

Use algo como isto

echo htmlentities ($ string);

htmlentities

Defina a string para o código html que você quer para a saída.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top