Frage

Ich habe eine einfache if-else-Anweisung - wenn sie wahr ist, ich mag es diesen Inhalt echo:

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

und wenn falsch tun etwas ähnliches.

Wie soll ich diesen Ansatz? Ich bin ein PHP Noob (und ich habe die Gemeinde hier ärgerlich gewesen!) - also bin ich an der Echofunktion stehen im Augenblick - ich glaube, ich Variablen setzen kann, aber das ist es

.

Vielen Dank!

War es hilfreich?

Lösung

Die gleiche Sache wie Sie getan haben:


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

Andere Tipps

Sie können einfach aus PHP brechen in der if / else-Anweisung.

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

Sie können jederzeit aus PHP brechen den ‚?>‘ Operator, und mit jeder Kontrollstruktur, sollte es den Code zeigen, so als ob Sie es echo'd. Eine andere Möglichkeit wäre die Ausgabe-Pufferung zu verwenden.

if(true)
    {
        ob_start();

        ?>
        Regular Code Here
        <?php

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

Dies wird den Inhalt verlassen, was zwischen dem Start ausgegeben und $ contents endet in.

Schließlich könnten Sie eine include (), um nur Ihr Login-Formular zu enthalten, wenn Sie es wirklich brauchen. (Ich ziehe diese Methode, weil ich fast überall Login-Formulare auf der Site kann sehr leicht)

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

Nur ein Vorschlag; zur besseren Lesbarkeit und Einfachheit der Flexibilität, ist es besser zu platzieren, was Sie wollen zunächst in einer Variable anzuzeigen.

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

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

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

Sie können auch eine Vorlage verwenden. Eine, die ich empfehlen würde, ist Easytemplate .

Es ist eine Form von PHP-bedingten, dass etwas einfacher für diese zu lesen, verwendet Doppelpunkt-Notation so anstelle von

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

Sie tun

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

Auch wenn Sie Ihre Konfiguration es erlaubt, können Sie Kurzschrift

<?= $variable ?>

statt

<?php echo($variable); ?>

aus PHP-Dropping ist der einfachste Weg, dies zu tun. Ich finde, dass mit den alternativen Kontrollstrukturen dies macht Art Code viel besser lesbar als gestrandete geschweiften Klammern, vor allem, wenn Sie eine Menge von hTML haben.

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

Verwenden Sie so etwas wie dieses

echo htmlentities ($ string);

htmlentities

Stellen Sie die Zeichenfolge an den HTML-Code, den Sie ausgeben möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top