2016-04-28 82 views
1

包裝它,我有一個代碼塊生成用戶的個人資料,看起來像這樣:有條件地顯示HTML沒有一個PHP回聲聲明

<?php 
    if($user_isbanned) { 
     echo 'User is banned.'; 
     exit(1); 
    } 
?> 
<!-- Content to show if the user is not banned --> 

這適用於我想要它做的事(停止曲線從禁止用戶帳戶出現),但如果我要添加頁面底部的頁腳,它將不會出現在禁用用戶的頁面上,因爲exit()語句中止生成頁面的其餘部分。我可以重新格式化我的代碼看起來像這樣:

<?php 
    if($user_isbanned) { 
     echo 'User is banned.'; 
    } else { 
     // Content to show if the user is not banned 
    } 
?> 

這將使我的頁腳出現無論用戶是否被禁止,但我不想來包裝整個頁面在一個大的PHP回聲聲明。無論如何,如果PHP條件滿足或不滿足,不會將整個頁面放入echo語句中,以防止出現某個HTML塊?

+0

我建議把頁腳放在一個單獨的文件中,然後根據需要包含它。 – Ultimater

+0

如果這是您的問題,您可以根據需要多次啓動和停止PHP模式。 –

+0

'<?php if($ user_isbanned):?> ... stuff ... <?php else:?> ...其他的東西... <?php endif; ?> – CD001

回答

1

在您的第一個示例中,頁腳將永遠不會顯示。實際上,甚至沒有關閉</html>標籤,這似乎不是很理想。

你不必逐字echo的HTML,你可以只:

<?php 
    if($user_isbanned) { 
     echo 'User is banned.'; 
    } else { 
?> 

<!-- html goes here --> 

<?php 
    } 
?> 

或者,你可能只是一個被禁止的用戶重定向到一個單獨的頁面完全。

+0

這工作完美。非常感謝你! :) – ExplodingKittens

3

你可以做的是這樣的事情:

<html> 
<head> 

</head> 
<body> 
    <div id="header"></div> 

    <?php if($user_isbanned){ ?> 
     <div id="content-banned"></div> 
    <?php } else { ?> 
     <div id="content-not-banned"></div> 
    <?php } ?> 

    <div id="footer"></div> 
</body> 

只呈現不同類型的內容,當用戶被禁止。

+0

這可能是最好的方法,儘管在HTML頁面中的可讀性我更喜歡如果():elseif() :else:和endif;因爲它們看起來更像HTML標籤。只是偏好,但。 – Christian

1

我首選的方案將是一個HTTP重定向到一個信息頁面:

<?php 
if($user_isbanned) { 
    header('Location: http://example.com/banned'); 
    exit(1); 
} 
<!DOCTYPE html> 

如果您希望保留目前的設計:

<?php 
    if($user_isbanned) { 
     echo 'User is banned.'; 
    } else { 
?> 
    <p>Content to show if the user is not banned</p> 
<?php 
} 

注:結束?>標記是可選的。