2009-07-23 58 views
1

我有一個簡單的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(我一直在這裏討厭社區!) - 所以我現在站在回聲函數 - 我想我可以設置變量,但這就是它。

非常感謝!

回答

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

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

呃,我的服務器不允許「包含」。 – 2009-07-23 03:51:53

+0

這真的很奇怪大聲笑。您始終可以調用一個函數,將其放在輸出登錄表單的代碼底部附近。 (您可以像第一個例子那樣在函數中跳出PHP) – 2009-07-23 03:58:45

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

使用這樣的

回聲ヶ輛($字符串);

htmlentities

設置字符串要輸出的HTML代碼。

2

只是一個建議;爲了便於閱讀和靈活性,最好先將想要顯示的內容放入變量中。

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

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

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

或者您可以使用模板。我會推薦的是EasyTemplate

1

有PHP有條件的一種形式,是比較容易閱讀這一點,使用冒號符號等等,而不是

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

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

此外,如果你的配置允許,您可以速記

<?= $variable ?> 

,而不是

<?php echo($variable); ?> 
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; ?>