如何在php中将会话信息传递到子目录

如何在php中将会话信息传递到子目录,php,session,subdirectory,Php,Session,Subdirectory,我正在用PHP创建一个用户可以登录的简单网站 根目录中的所有页面都可以正常工作,但当我尝试在子目录中的网页上启动会话时,它不会读取它 这是我在子目录中网页的开头所做的,正如我所说的,它对根目录中的每个页面都很好- session_start(); if(!session_is_registered(myusername)){ header("location: http://www.four-corners.org.uk/welcome.php"); 有几个人似乎有同样的问题,但我还没有找到解

我正在用PHP创建一个用户可以登录的简单网站

根目录中的所有页面都可以正常工作,但当我尝试在子目录中的网页上启动会话时,它不会读取它

这是我在子目录中网页的开头所做的,正如我所说的,它对根目录中的每个页面都很好-

session_start();
if(!session_is_registered(myusername)){
header("location: http://www.four-corners.org.uk/welcome.php");
有几个人似乎有同样的问题,但我还没有找到解决办法

编辑-

下面是我用来定义“myusername”并在会话中注册它的代码

// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$mypassword=md5($_POST['mypassword']);

// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword"); 

会话已注册()
已弃用,不应使用

等效的“现代”代码是

session_start();
if (!isset($_SESSION[myusername])) {
  ...
}

请注意,我完全复制了您的“我的用户名”。如果前面没有
$
符号,则将其视为常量。如果您没有使用
define()
设置该常量,则在进入会话\u注册之前,该常量的计算结果将为null并转换为空字符串。除非您的会话有一个以空字符串作为键的值,否则每次都会得到重定向。

如果您执行
var\u dump($\u session)
,是否会得到任何结果?谢谢@Nalum,我不确定将var\u dump($\u session)放在哪里,但无论我放在哪里,都会出现错误-解析错误:语法错误,第3行的D:\four corners.org.uk\wwwroot\destination\australia.php中出现意外的T_字符串。您可以显示
australia.php
第3行中的代码吗?您刚刚完全更改了我的答案。阅读代码片段后的段落。你的意思是说
myusername
被分别定义为常量
defined('myusername','something')
,这就是我写这段的原因。OP的代码片段没有引号,所以我复制了它,并解释了它可能错误的原因。感谢@shakti和@mark花时间回答。我已经更新了代码,使它不再被弃用,并且它仍然可以很好地处理根目录中的网页。但是,子目录中的网页仍无法拾取会话。我在代码中的任何地方都没有使用define(),我会将定义它的代码添加到问题中,这是否会使问题变得更简单?您是否检查了会话cookie是否正在发送到这些子目录中的页面?使用Firebug或HTTPFox检查请求中来回的头。