回声块包含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');
}
答
<?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 } ?>
答
只是一个建议;为了便于阅读和灵活性,最好先将想要显示的内容放入变量中。
$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; ?>
呃,我的服务器不允许“包含”。 – 2009-07-23 03:51:53
这真的很奇怪大声笑。您始终可以调用一个函数,将其放在输出登录表单的代码底部附近。 (您可以像第一个例子那样在函数中跳出PHP) – 2009-07-23 03:58:45