我正在尝试做一些事情,当你打开像index.php这样的东西时?bodyonly = 1 php只返回body html标签内的内容。但是,当我尝试类似下面的代码时:
<?php if !isset($_GET["bodyonly"]): ?><html>
<head>
<title>TEST</title>
</head>
<body>
<p>Up!</p>
<?php endif; ?><p>Down!</p><?php if !isset($_GET["bodyonly"]): ?>
</body>
</html><?php endif; ?>
我收到错误500但没有任何反应。如果我尝试使用if(isset ...){echo ...}这样的替代方案,那么我必须做很多我不想做的其他修改。
关心赐教? :)
答案 0 :(得分:3)
在所有类型的PHP语法中,条件都需要括号。
<?php if (!isset($_GET["bodyonly"])): ?><html>
<head>
<title>TEST</title>
</head>
<body>
<p>Up!</p>
<?php endif; ?><p>Down!</p><?php if (!isset($_GET["bodyonly"])): ?>
</body>
</html><?php endif; ?>
另外,您是否考虑过为代码使用更现代的结构?使用PHP作为编程语言而不是HTML包装器,可以很容易地看到有条件运行的内容。
<?php
$status="Up";
// $status="Down";
$header="<html>\n\t<head>\n\t\t<title>TEST</title>\n\t</head>\n\n <body>\n";
$footer=" </body>\n</html>\n";
if (!isset($_GET["bodyonly"])) {
print $header;
}
printf("\t<p>%s</p>\n", $status);
if (!isset($_GET["bodyonly"])) {
print $footer;
}
或者,为了它的乐趣,甚至:
<?php
$status="Up";
// $status="Down";
$header="<html>\n\t<head>\n\t\t<title>TEST</title>\n\t</head>\n\n <body>\n";
$footer=" </body>\n</html>\n";
print isset($_GET["bodyonly"]) ? "" : $header;
printf("\t<p>%s</p>\n", $status);
print isset($_GET["bodyonly"]) ? "" : $footer;
或(这只是愚蠢):
<?php
$status="Up";
// $status="Down";
$header=""; $footer="";
if (!isset($_GET["bodyonly"])) {
$header="<html>\n\t<head>\n\t\t<title>TEST</title>\n\t</head>\n\n <body>\n";
$footer=" </body>\n</html>\n";
}
print $header . sprintf("\t<p>%s</p>\n", $status) . $footer;
从php.net查看instructions on syntax。