包含PHP函数的HTML的Echo块

时间:2009-07-23 03:19:59

标签: php echo

我有一个简单的if-else语句 - 如果是,我希望它回应这个内容:

<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菜鸟(我在这里一直在讨厌这个社区!) - 所以我现在正站在echo函数 - 我想我可以设置变量,但那就是它。

非常感谢!

7 个答案:

答案 0 :(得分:8)

你一直在做的事情:


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

答案 1 :(得分:4)

你可以在if / else语句中简单地打破PHP。

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

您可以随时使用'?&gt;'打破PHP运算符,以及任何控制结构,它应该显示代码,就像你回应它一样。另一种选择是使用输出缓冲。

if(true)
    {
        ob_start();

        ?>
        Regular Code Here
        <?php

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

这将在$ contents中保留在开头和结尾之间输出的内容。

最后,您可以使用include()仅在实际需要时包含您的登录表单。 (我更喜欢这种方法,因为我可以很容易地将登录表单放在网站的任何地方)

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

答案 2 :(得分: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 } ?>

答案 3 :(得分:2)

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

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

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

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

或者您可以使用模板。我建议的是EasyTemplate

答案 4 :(得分:1)

有一种形式的php条件,为此更容易阅读,使用冒号表示而不是

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

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

如果您的配置允许,也可以缩写

<?= $variable ?>

而不是

<?php echo($variable); ?>

答案 5 :(得分:1)

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

答案 6 :(得分:0)

使用类似的东西

echo htmlentities($ string);

htmlentities

将字符串设置为您要输出的html代码。