Php 这个登录代码正确吗,因为它没有’;好像不行

Php 这个登录代码正确吗,因为它没有’;好像不行,php,session,redirect,isset,Php,Session,Redirect,Isset,当我登录并在会话中存储用户名时,它不会将我重定向到该页面index2.php。会话已通过脚本开头包含的文件dbconnect.php中的session\u start()启动 出了什么问题?这毫无意义: <?php include_once '../../includes/dbconnect.php'; if (isset($_SESSION['username'])) { header('Location: ../../-/ucp/index2.php');

当我登录并在会话中存储用户名时,它不会将我重定向到该页面
index2.php
。会话已通过脚本开头包含的文件
dbconnect.php
中的
session\u start()
启动

出了什么问题?

这毫无意义:

<?php

    include_once '../../includes/dbconnect.php';

    if (isset($_SESSION['username'])) {
    header('Location: ../../-/ucp/index2.php');
    }

?>
也许您应该将其更改为完整URL,如下所示:

header('Location: ../../-/ucp/index2.php');
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');
    }

?>
之所以
。/../-/ucp/index2.php
毫无意义,是因为浏览器会将
。/../../
解释为无论您所在的URL是什么,都应该下降到上两层的路径……但您是否100%确定上两层有一个位置?完整的URL是一种方式

此外,代码中还有一个更大的问题,即依赖于相对路径,这不是好的做法。它可能会绊倒你,就像它明显在这里一样,避免它的最好方法是在主配置中设置一个基本路径

因此,您可以在配置文件中设置如下内容:

header('Location: http://your.great.site/-/ucp/index2.php');
如果您不知道文件系统的基本路径是什么,只需将这行代码放在PHP代码中;像
index.php

$BASE_PATH = '/full/path/to/your/codebase/here/';
然后,使用该集合,您可以将代码更改为以下内容:

header('Location: ../../-/ucp/index2.php');
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');
    }

?>
因此,您可以在代码中执行此操作:

$BASE_URL = 'http://your.great.site/';


这样,您的基本设置都在一个地方,您可以只编写代码,而不会被相对路径或URL胡说八道所破坏,继续生活

我敢打赌,在您尝试使用
header()
函数之前,已经发送了标题(读取任何内容)。如果您向用户发送了任何内容,这将停止重定向工作。文件夹名为
/-/
?显示更多代码。建议调试
$\u SESSION
的内容。您需要在topOP中包含
SESSION\u start()
,说明该会话已在包含的文件中启动。@如果使用,请注意!isset和我将标题链接设置为else,它仍然不起作用,但是!isset在同一页上工作。我在多个映射/文件中使用标题。它可用于增加2个文件夹路径。但这确实有道理,让我们试试看。Thanks@Dexter“它确实可以增加2个文件夹路径。”哦,我毫不怀疑它是有效的。但是我要说的是,跟踪
。/../
对于一个文件/URL意味着什么,以及
。/../../
对于另一个文件/URL意味着什么,这会让你发疯。最好只在配置文件中设置基本路径和基本url。