2015-12-25 106 views
-1

我想製作一個系統,允許用戶查看他們的應用程序,並讓系統根據特定ID(這是變量,在這種情況下爲$ APPID)確定它的基礎,以及該應用程序是一個mod還是管理員應用程序($ MOA)。PHP輸出500錯誤

這裏是我的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服務器錯誤。我不知道爲什麼。我搜索了很長時間,找不到任何答案。我的語法沒有看到任何錯誤。 這將意味着很多,如果有人可以幫助我!

編輯
我已經重做我determineStatus()函數,並放置所有的回聲的的頁眉()的

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錯誤。

+1

如果存在HTTP 500服務器錯誤,首先要查找的地方是您的服務器日誌。如果你有Apache運行,那將是一個名爲'error.log'和/或'access.log'的文件。 – icecub

+0

現在我看到的第一個問題是,你'回聲'字符串,然後發送標題。這是不可能的。頭文件只能在任何輸出之前發送。 – icecub

+0

@icecub仍然輸出錯誤:( – burger97979

回答

4

您的PHP代碼有兩個錯誤。 如果我用你的編輯功能,你已經忘記了所有的)在每個header([...]

結束之後,如果你聲明變量你的功能,你不能沒有使用global <your_variable>;訪問它們。 (例如$APPID

但無論如何,我在測試代碼時沒有收到任何500錯誤。 嘗試檢查您的日誌文件以獲取錯誤。 (500一般是PHP語法錯誤)

對不起,我的英語不好,順便說一句。

+0

仍然是一個服務器錯誤:( – burger97979

+0

)你能給我你的日誌上的錯誤嗎?(如果你有一個SSH訪問與Apache,它在'/ var/log/apache2/error.log') – Seblor

+0

哦,是你確定你還沒有忘記標籤? – Seblor