【问题标题】:Session is not wokring on Server side会话在服务器端不起作用
【发布时间】:2017-12-22 00:27:45
【问题描述】:

我正在处理一个项目,在该项目中我面临创建的会话问题,但是当我重定向到另一个页面时,它不会出现在下一页上。如果我在另一台服务器上使用相同的代码,那么它可以正常工作。我无法找到解决方案。我也在这个项目中使用 VPN 服务器。我把我的代码放在下面

info.php

session_start();
$array = [5,6,7,8,9]; 
$_SESSION['mySession'] = $array;
//print_r($_SESSION); //works fine here
exit(header('location:index_2.php'));

index_2.php

session_start();
print_r($_SESSION);//getting blank array

下面我也在我的服务器上分享我的会话设置,请找到图片

我正在使用 PHP 版本 7.0.21RC1(根据 phpinfo())

【问题讨论】:

  • 不,我们必须在获取任何会话之前调用 session_start()。这不是问题克里斯
  • VPN 服务器在哪里安装?
  • 您使用的是负载均衡器还是其他意味着 info.php 和 index_2.php 可能不在同一台服务器上的东西?
  • @Mark_1 这是我的怀疑

标签: php session vpn


【解决方案1】:

试试这个:

header('location:index_2.php');
exit();

header() 调用不是exit() 的参数,请参阅exitheader 手册页。


您说过setcookie() 不起作用,这是您问题的根源 - 会话 ID 是通过 cookie 发送的,除非您更改配置并在 URL 中传递它。您可以使用

进行测试
// the constant SID is the current session name and id formatted as a string suitable for URLs
header('Location: index_2.php?'.SID);

在您的第一页上,并且

session_id($_GET[session_name()]);    // usually == $_GET['PHPSESSID']
session_start();    //  do this *after* setting the session ID as above

在您的第二页中。

搜索php setcookie not working,您会看到很多结果。 setcookie() 不工作的最常见原因是在 setcookie() 调用之前将某些内容发送到浏览器。您的搜索将有很多关于如何处理此问题的提示。

【讨论】:

  • 已经试过了还是不行。如果相同的代码在另一台服务器上完美运行,那么我们必须考虑除此之外的代码。
  • 此构造 exit(header('location:index_2.php')); 无效,请参阅 exitheader 手册页。
  • 如果您的代码在一台服务器上运行,但在另一台服务器上运行不正常,则两台服务器上的配置和/或软件存在差异。找出差异,你就会找到答案。
  • 我也试过header('location:index_2.php'); exit(); 这个方法。但仍然无法正常工作
  • 看两台服务器的配置——VPN在哪里适合?这两个文件实际上是在同一台物理机器上吗?
猜你喜欢
  • 2015-08-23
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-10
  • 2013-09-08
  • 2014-09-28
  • 2011-06-22
相关资源
最近更新 更多