2016-04-28 98 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 
} 

注:结束?>标记是可选的。