回声块包含PHP函数

问题描述:

我有一个简单的if-else语句 - 如果是真的,我想它呼应此内容:回声块包含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> 

,如果假做类似的事情。

我该如何解决这个问题?我是一个PHP noob(我一直在这里讨厌社区!) - 所以我现在站在回声函数 - 我想我可以设置变量,但这就是它。

非常感谢!

因为你一直在做

同一件事:


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

您可以在if/else语句中简单地跳出PHP。

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'); 
} 
+0

呃,我的服务器不允许“包含”。 – 2009-07-23 03:51:53

+0

这真的很奇怪大声笑。您始终可以调用一个函数,将其放在输出登录表单的代码底部附近。 (您可以像第一个例子那样在函数中跳出PHP) – 2009-07-23 03:58:45

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

使用这样的

回声ヶ辆($字符串);

htmlentities

设置字符串要输出的HTML代码。

只是一个建议;为了便于阅读和灵活性,最好先将想要显示的内容放入变量中。

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

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

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

或者您可以使用模板。我会推荐的是EasyTemplate

有PHP有条件的一种形式,是比较容易阅读这一点,使用冒号符号等等,而不是

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

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

此外,如果你的配置允许,您可以速记

<?= $variable ?> 

,而不是

<?php echo($variable); ?> 

剔除php是最简单的方法。我发现使用alternate control structures使得这种代码比搁浅的花括号更可读,尤其是如果你有很多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; ?>