0

你好堆栈成员,

我目前有一个我希望显示的错误报告 - 我希望有一段静态的 html 可用于我的 GET 错误。

目前我的方式

apicheck.php?key=dfdf - 显示一个漂亮的页脚

apicheck.php?url=dfdf - 不显示 $_GET['url'] 部分中当前引用的页脚。

我的最终目标是让 html 代码在 die 函数所在的某个地方,就像 id 一样让所有 3 个 get 错误消息能够显示 HTML 页脚

我已经添加了 die 函数,以便我可以将代码与下面的代码分开

我还是个新手,这是我第一次尝试这样的冒险

我不太确定如何在其他任何地方添加 html,因为它不会在 IF 部分之一内 - 如果有人能解释如何在其他区域添加它,我将不胜感激

<?php
echo "<html><head><title>Error Report</title><style>
<!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}.style1 {font-size: 9px}
-->
</style> </head><body>
<h1>API Authentication System 1.0.1 GPX</h1>
<HR size='1' noshade='noshade'>";
if(empty($_GET)){
    echo "<p><b>Error Name:</b> <u>VAR_M</u><br>";
    echo "<p><b>Description:</b> <u>No Variables Sent</u><br><br>";
}
if(empty($_GET['key'])){
echo "<p><b>Error Name:</b> <u>API_KEY</u><br>";
echo "<p><b>Description:</b>  <u>Missing API-Key</u><br><br>";
}
if(empty($_GET['url'])){
echo "<p><b>Error Name:</b> <u>URL_M</u><br>";
echo "<p><b>Description:</b>  <u>Missing URL</u><br>";
echo "</u></p><HR size='1' noshade='noshade'>
<h3 align='center' class='style1'>X Auth /1.0.1.GPX</h3>
</body>
</html>";              
die();
}
else
?>
4

4 回答 4

1

你指的是这个文本的页脚吗?

echo "</u></p><HR size='1' noshade='noshade'>
<h3 align='center' class='style1'>X Auth /1.0.1.GPX</h3>
</body>
</html>";

如果是这样,只需将其放在单独的 if 语句中,如果任何错误条件适用,则该语句的计算结果为 true:

if(empty($_GET) or empty($_GET['key']) or empty($_GET['url']) {
    echo "</u></p><HR size='1' noshade='noshade'>
    <h3 align='center' class='style1'>X Auth /1.0.1.GPX</h3>
    </body>
    </html>"
    die();
}

更好的是,您可以$error_found = 1;在每个其他错误消息条件块中包含一行,然后$error_found在打印页脚和 die() 语句时进行测试。这样,如果您添加额外的错误检查,您就不必记住将该条件添加到最终的 if 语句中。

于 2012-05-31T21:16:44.357 回答
1

如果你想让重复使用相同的 html 结构变得容易,你可以使用一个函数来回显它。

function echoError($name, $description) {
    echo "<p><b>Error Name:</b> <u>$name</u><br>";
    echo "<p><b>Description:</b> <u>$description</u><br><br>";
}

让你的整个代码看起来像这样:

<html>
<head>
  <title>Error Report</title>
  <style>
<!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}.style1 {font-size: 9px}
-->
  </style>
</head>
<body>
  <h1>API Authentication System 1.0.1 GPX</h1>
  <HR size='1' noshade='noshade'>";
  <?php
    $error_found = false;
    if(empty($_GET)){
        echoError("VAR_M", "No Variables Sent");
        $error_found = true;
    }
    if(empty($_GET['key'])){
        echoError("API_KEY", "Missing API-Key");
        $error_found = true;
    }
    if(empty($_GET['url'])){
        echoError("URL_M", "Missing URL");
        $error_found = true;
    }
    if ($error_found) {
        echo "<HR size='1' noshade='noshade'><h3 align='center' class='style1'>X Auth /1.0.1.GPX</h3>";
    }
  ?>
</body>
</html>
于 2012-05-31T21:22:39.377 回答
0

您可以构建一个字符串(从一个空字符串开始,并在获得错误消息时将它们连接到它),然后在您想要的任何地方打印该字符串。

$errorString = "";
if(empty($_GET)) {
    $errorString .= "<p><b>Error Name:</b> <u>VAR_M</u><br>";
...

最后,或者你想要的任何地方,

echo $errorString;
于 2012-05-31T21:12:21.957 回答
0

您可以通过将 html 部分放在它们自己的文件中然后将它们包含在内来清理它您可以通过使用Heredocinclude "file.html";来简化这些 echo 语句

于 2012-05-31T21:12:55.497 回答