2009-07-23 11 views
1

J'ai un simple si-else - si cela est vrai, je voudrais à ce contenu écho:bloc Echo de HTML qui contient des fonctions PHP

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

et si elle est fausse quelque chose de semblable.

Comment dois-je aborder cette question? Je suis un noob PHP (et j'ai ennuyé la communauté ici!) - donc je suis à la fonction d'écho en ce moment - je pense que je peux définir des variables, mais c'est à peu près tout.

Merci beaucoup!

Répondre

8

Même chose que vous avez fait:


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

4

Vous pouvez simplement sortir de PHP dans l'instruction if/else.

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

Vous pouvez sortir de PHP à tout moment en utilisant l'opérateur « ?> », Et avec une structure de contrôle, il devrait montrer le code comme si vous echo'd il. Une autre option consisterait à utiliser la mise en mémoire tampon de sortie.

if(true) 
    { 
     ob_start(); 

     ?> 
     Regular Code Here 
     <?php 

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

Ceci laissera le contenu de ce qui est sorti entre le début et la fin dans le contenu $. Enfin, vous pouvez utiliser include() pour inclure votre formulaire de connexion uniquement lorsque vous en avez vraiment besoin. (Je préfère cette méthode parce que je peux mettre les formulaires de connexion presque partout sur le site très facilement)

if(true) 
{ 
    include('loginform.php'); 
} 
+0

eh, mon serveur n'autorise pas "include". –

+0

Cest vraiment bizarre lol. Vous pouvez toujours appeler une fonction placée près du bas du code qui génère le formulaire de connexion. (Vous pouvez sortir de PHP dans une fonction aussi, tout comme le premier exemple) –

+0

'include' fonctionne comme un charme ici. Je vous remercie. –

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

Utilisez quelque chose comme ça

echo htmlentities ($ string);

htmlentities

Définissez la chaîne au code HTML que vous voulez afficher.

+0

Cela ne traitera pas réellement le code de sortie. –

+0

désolé, mon mauvais. Je pensais que vous vouliez que la sortie soit le code. – lanrat

+0

Haha. Aucun problème! –

2

Juste une suggestion; Pour plus de lisibilité et de souplesse, il est préférable de placer d'abord ce que vous voulez afficher dans une variable.

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

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

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

Ou vous pouvez utiliser un modèle. Un que je recommanderais est EasyTemplate.

1

il y a une forme de php conditionnel qui est un peu plus facile à lire pour cela, utilise la notation du côlon donc au lieu de

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

vous ne

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

également si votre configuration le permet, vous pouvez sténographie

<?= $variable ?> 

au lieu de

<?php echo($variable); ?> 
1

La suppression de php est le moyen le plus simple de le faire.Je trouve que l'utilisation du alternate control structures rend ce type de code beaucoup plus lisible que les accolades bloquées, surtout si vous avez beaucoup 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; ?>