问题描述
我建立了一个php网站,用户在该网站上登录并创建带有用户凭证的会话。对于需要用户登录的每个页面,我创建了一个函数来检查会话变量。现在,当我直接使用带有服务器IP地址的网站(例如:http://123.45.67.891/mywebsite)时,我的所有代码似乎都可以正常工作。但是,一旦我通过GoDaddy的“域屏蔽”分配了子域,则所有会话似乎根本无法正常工作。我试图搜索其他Stackoverflow帖子和任何Google搜索,但似乎无法解决。该网站不会像我读过其他文章那样将任何页面重定向到另一个子域。我建立的该网站上的所有重定向都在相同的子域屏蔽中。现在,我确实怀疑这种掩盖会导致Cookie感到困惑... 因此,我目前得到的结果是,当您提交登录表单时,PHP代码将运行,成功创建会话,将成功信息返回给ajax,ajax成功函数将重定向到下一页,但是一旦到达在下一页中,我用于检查凭据的代码会立即使用户返回索引页面,因为它看不到任何会话。该功能按我写的预期工作,以防止任何人未经登录就访问该页面。但是,由于使用了域屏蔽,用户永远无法登录... 有解决方案吗?还是我需要摆脱子域屏蔽并为此购买一个单独的域,以便它可以像普通网站一样工作?
下面是创建会话的代码段和运行凭据检查的代码段。 谢谢!
//====== Create sessions at signin
... mysqli calls before this with Posts from ajax ...
session_set_cookie_params(0,'/','.mywebsite.com');
session_start();
$_SESSION["TYPE"] = $row[3];
$_SESSION["USERNAME"] = $row[0];
$_SESSION["FULLNAME"] = $row[2];
session_write_close();
... some codes returning success call to ajax where javascript then redirects to the user dashboard page...
//======= Credential Check
function checksignin(){
session_set_cookie_params(0,'.mywebsite.com');
session_start();
if(!isset($_SESSION["USERNAME"])){
session_destroy();
header('Location: ../index.php');
exit;
else if(empty($_SESSION["USERNAME"])){
session_destroy();
header('Location: ../index.php');
exit;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)