我遇到了一个似乎很容易解决的 PHP 问题,但是却让我非常头疼地寻找解决方案。
我正在运行 PHPBB,并正在创建一个外部登录端口来访问 SQL 数据库中的某些字段。代码中的问题来了,因为 PHPBB 和我登录的位置都存在于网站上的两个单独的子目录中。
这是我的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 时生成 404 错误,而不是论坛上的那个。我尝试以允许脚本运行的形式使用网站的完整 URL,但论坛会话未正确加载,因此只是将我带回到此处的登录页面,并在 url 中使用会话 ID。