我正在尝试创建一个允许用户查看其应用程序的系统,并让系统根据特定ID(在这种情况下是变量,$ APPID)确定它的位置,以及是否应用程序是mod或admin应用程序($ MOA)。
这是我的index.php
的 HTML
<html>
<body>
<form action="viewapp.php" method="GET">
<h1>Is this a mod or admin application?</h1>
<input type="radio" name="MOA" value="MOD">Mod</input><br>
<input type="radio" name="MOA" value="ADMIN">Admin</input>
<h1>Put Application ID Below</h1>
<input type="text" name="APPID" placeholder="XXXX-XXXX-XXXX-XXXX" /><br><br>
<input type="submit" value="View" />
</form>
</body>
</html>
这是我的PHP
PHP
error_reporting(E_ALL);
$APPID = $_GET['APPID'];
$MOA = $_GET['MOA'];
function determineStatus() {
$MATTEMPTA = 'mod-applications/accepted/' . $APPID . '.php';
$MATTEMPTD = 'mod-applications/denied/' . $APPID . '.php';
$AATTEMPTA = 'admin-applications/accepted/' . $APPID . '.php';
$AATTEMPTD = 'admin-applications/denied/' . $APPID . '.php';
if (FILE_EXISTS($MATTEMPTA)) {
echo 'Redirecting...';
header('Location: https://website.com/apply/mod-applications/accepted/' . $APPID . '.php';
} elseif (FILE_EXISTS($MATTEMPTD)) {
echo 'Redirecting...';
header('Location: https://website.com/apply/mod-applications/denied/' . $APPID . '.php';
} elseif (FILE_EXISTS($AATTEMPTA)) {
echo 'Redirecting...';
header('Location: https://website.com/apply/admin-applications/accepted/' . $APPID . '.php';
} elseif (FILE_EXISTS($AATTEMPTD)) {
echo 'Redirecting...';
header('Location: https://website.com/apply/admin-applications/denied/' . $APPID . '.php';
} else {
echo 'Your application was not found';
}
}
if ($MOA == "MOD") {
$PATH = 'mod-applications/' . $APPID . '.php';
} elseif ($MOA == "ADMIN") {
$PATH = 'admin-applications/' . $APPID . '.php';
} else {
die('Please select Mod or Admin');
}
if (FILE_EXISTS($PATH)) {
echo 'Redirecting...';
header('Location: https://website.com/apply/' . $PATH . '');
} elseif (!FILE_EXISTS($PATH)) {
determineStatus();
} else {
echo 'Your application was not found';
}
出于某种原因,此代码始终输出500 Server Error。我不知道为什么。我搜索了很长时间,但无法找到答案。我的语法中没有看到任何错误。 如果有人可以帮助我,那将意味着很多!!
修改
我重做了我的determineStatus()函数,并将所有的echo放在了Header()之后
function determineStatus() {
$MATTEMPTA = 'mod-applications/accepted/' . $APPID . '.php';
$MATTEMPTD = 'mod-applications/denied/' . $APPID . '.php';
$AATTEMPTA = 'admin-applications/accepted/' . $APPID . '.php';
$AATTEMPTD = 'admin-applications/denied/' . $APPID . '.php';
if (FILE_EXISTS($MATTEMPTA)) {
header('Location: https://website.com/apply/mod-applications/accepted/' . $APPID . '.php';
echo 'Redirecting...';
} elseif (FILE_EXISTS($MATTEMPTD)) {
header('Location: https://website.com/apply/mod-applications/denied/' . $APPID . '.php';
echo 'Redirecting...';
} elseif (FILE_EXISTS($AATTEMPTA)) {
header('Location: https://website.com/apply/admin-applications/accepted/' . $APPID . '.php';
echo 'Redirecting...';
} elseif (FILE_EXISTS($AATTEMPTD)) {
header('Location: https://website.com/apply/admin-applications/denied/' . $APPID . '.php';
echo 'Redirecting...';
} else {
echo 'Your application was not found';
}
}
修改
我在这里发布我的.htaccess(无论如何都没有任何东西)。
请勿删除此行,否则mod_rewrite规则将停止工作 RewriteBase /
修改
我通过删除全局变量来解决问题。由于某种原因,他们造成了500错误。
答案 0 :(得分:4)
您的PHP代码有两个错误。
如果我使用您编辑的功能,则您忘记了每个)
header([...]
然后,如果您从函数中声明变量,则无法在不使用global <your_variable>;
的情况下访问它们。 (例如$APPID
)
但无论如何,我在测试代码时没有遇到任何500错误。 尝试检查您的日志文件以获取错误。 (通常是500语法错误)
抱歉我的英语不好,顺便说一句。