PHP の問題は非常に簡単に解決できるように見えますが、解決策を見つけるにはかなりの頭痛の種です。
PHPBB を実行しており、SQL データベースの特定のフィールドにアクセスするための外部ログイン ポートを作成しています。PHPBB とログイン元の場所の両方が Web サイトの 2 つの別々のサブディレクトリに存在するため、コードの問題が発生しています。
ここに私のPHPコードがあります:
define("IN_PHPBB", true);
define("PHPBB_ROOT_PATH", "../forums/");
$phpbb_root_path = "../forums/";
$phpEx = substr(strrchr(__FILE__, "."), 1);
include($phpbb_root_path . "common." . $phpEx);
include($phpbb_root_path . "includes/functions_display." . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
if ($user->data["is_registered"]) {
echo "<form method=\"post\" action=\"".$phpbb_root_path."ucp.php?mode=logout&sid=".$user->data["session_id"]."\">";
echo "<input type=\"submit\" name=\"logout\" value=\"Logout\">";
echo "<input type=\"hidden\" name=\"redirect\" value=\"../index.php\">";
echo "<br /></form>";
}
if (!$user->data["is_registered"]) {
echo "Welcome! Please log-in to your forums account to proceed:<p>";
echo "<form method=\"post\" action=\"".$phpbb_root_path."ucp.php?mode=login\">";
echo " Username:";
echo "<br />";
echo " <input type=\"text\" name=\"username\" size=\"15\" value=\"\">";
echo "<br /><br />";
echo " Password:";
echo "<br />";
echo " <input type=\"password\" name=\"password\" size=\"15\" value=\"\">";
echo "<br /><br />";
echo "<input type=\"submit\" name=\"login\" value=\"Login\">";
echo "<input type=\"hidden\" name=\"redirect\" value=\"../".$_SERVER["PHP_SELF"]."\">";
echo "<br /></form>";
}
このコードは、フォーラムのサブディレクトリではなく、この php ファイルがあるサブディレクトリの ucp.php にアクセスしようとする Web サイトで 404 エラーを生成します。スクリプトが機能する形式で Web サイトの完全な URL を使用しようとしましたが、フォーラム セッションが正しく読み込まれなかったため、URL にセッション ID が含まれるログイン ページに戻りました。