Domanda

Ho una semplice istruzione if-else - se è vero, mi piacerebbe che eco questo contenuto:

<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 falsa fare qualcosa di simile.

Come dovrei affrontare questo? Sono un noob PHP (e sono stato fastidioso comunità qui!) - quindi sto in piedi alla funzione eco in questo momento - penso di poter impostare le variabili, ma questo è tutto

.

Grazie mille!

È stato utile?

Soluzione

La stessa cosa, come avete fatto:


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

Altri suggerimenti

Si può semplicemente uscire PHP nel if / else.

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

È possibile uscire da PHP in qualsiasi momento utilizzando il '>?' Operatore, e con qualsiasi struttura di controllo, che dovrebbe mostrare il codice come se si echo'd esso. Un'altra opzione sarebbe quella di utilizzare il buffer di uscita.

if(true)
    {
        ob_start();

        ?>
        Regular Code Here
        <?php

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

Questo lascerà il contenuto di ciò che in uscita tra l'inizio e fine a $ contenuti.

Infine, si potrebbe usare un include () per includere solo il modulo di login quando realmente bisogno. (Preferisco questo metodo perché posso mettere le forme d'accesso quasi ovunque sul sito molto facilmente)

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

Solo un suggerimento; per migliorare la leggibilità e la facilità di flessibilità, è meglio mettere ciò che si desidera visualizzare all'interno di una variabile prima.

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

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

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

In alternativa, è possibile utilizzare un modello. Uno che consiglierei è EasyTemplate .

c'è una forma di php condizionale che è un po 'più facile da leggere per questo, utilizza la notazione del colon così invece di

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

si fa

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

anche se la configurazione lo consente, è possibile stenografia

<?= $variable ?>

anziché

<?php echo($variable); ?>

L'abbandono del PHP è il modo più semplice per farlo. Trovo che utilizzando i strutture di controllo alternativi rende questo sorta di codice molto più leggibile di parentesi graffe non recuperabili, soprattutto se si hanno un sacco di 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; ?>

Usa qualcosa come questo

htmlentities echo ($ string);

htmlentities

Imposta la stringa per il codice html che si desidera in uscita.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top