<?php
include_once '../../includes/dbconnect.php';
if (isset($_SESSION['username'])) {
header('Location: ../../-/ucp/index2.php');
}
?>
当我登录时,它不会将我重定向到该页面index2.php
&amp;当用户名存储在会话中时。会话已经通过文件session_start()
中的dbconnect.php
启动,该文件包含在脚本的开头。
出了什么问题?
答案 0 :(得分:1)
这没有任何意义:
header('Location: ../../-/ucp/index2.php');
也许您应该将其更改为完整的网址,如下所示:
header('Location: http://your.great.site/-/ucp/index2.php');
../../-/ucp/index2.php
没有意义的原因是浏览器会将../../
解释为您所处的任何网址应该下降到两个级别的路径......但是你是100%确定有一个放2级?完整的URL是可行的方法。
此外,您的代码中存在一个更大的问题,即您依赖相对路径,这不是一个好习惯。它可以绊倒你 - 就像它在这里一样 - 并且避免它的最好方法是在主配置中设置一个基本路径。
所以你可以在配置文件中设置这样的东西:
$BASE_PATH = '/full/path/to/your/codebase/here/';
如果您不知道文件系统基本路径是什么,只需将这行代码放在PHP代码中;比如index.php
:
echo "Your path is: " . realpath(dirname(__FILE__)) . "<br />";
然后加载该页面。靠近顶部的地方将是这个文本:
Your path is: /full/path/to/your/codebase/here/
然后使用该集,您可以将代码更改为:
<?php
include_once '../../includes/config.php';
include_once $BASE_PATH . 'includes/dbconnect.php';
if (isset($_SESSION['username'])) {
header('Location: ../../-/ucp/index2.php');
}
?>
是的,设置通过相对路径加载config.php
,然后在下一行使用$BASE_PATH
似乎更有效,但好处是那些/includes/config.php
线条设置,你不再需要担心它。然后可以设置$BASE_PATH
以满足您所处的任何设置的需要。
那说,如何设置$BASE_URL
呢?像这样:
$BASE_URL = 'http://your.great.site/';
那么你可以在代码中执行此操作:
<?php
include_once '../../includes/config.php';
include_once $BASE_PATH . 'includes/dbconnect.php';
if (isset($_SESSION['username'])) {
header('Location: ' . $BASE_URL . 'ucp/index2.php');
}
?>
这样你的基本设置都集中在一个地方,你只需编码而不会被相对路径或URL废话脱轨,并继续生活!