1

我有一个简单的 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>

如果 false 做类似的事情。

我应该如何处理这个?我是一个 PHP 菜鸟(我一直在惹恼这里的社区!)——所以我现在正站在 echo 函数前——我想我可以设置变量,但仅此而已。

非常感谢!

4

7 回答 7

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

于 2009-07-23T03:29:43.690 回答
4

您可以简单地在 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');
}
于 2009-07-23T03:24:46.353 回答
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 } ?>
于 2009-07-23T03:26:12.510 回答
2

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

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

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

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

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

于 2009-07-23T03:36:59.977 回答
1

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

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

你做

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

如果您的配置允许,您也可以速记

<?= $variable ?>

代替

<?php echo($variable); ?>
于 2009-07-23T03:49:44.070 回答
1

退出 php 是最简单的方法。我发现使用备用控制结构使这种代码比搁置的花括号更具可读性,尤其是在您有很多 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; ?>
于 2009-07-23T07:57:23.620 回答
0

使用这样的东西

回声 htmlentities($string);

实体

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

于 2009-07-23T03:27:20.230 回答