【问题标题】:How to access session variables from a second php file?如何从第二个 php 文件访问会话变量?
【发布时间】:2010-06-24 15:39:28
【问题描述】:

作为我尝试创建与其他开发人员的现有 php 应用程序具有相同外观和感觉的 ASP.net 的一部分。 (有关它的更多信息,您可以在这里阅读:How to share sessions between PHP and ASP.net application?) 我正在我的 ASP.net 和 PHP 应用程序之间共享用户登录状态。

我有像 signin.aspx?foo=asdhhjkasd (ASP.net) 和 signin.php?foo=asdhhjkasd 这样的链接,它们告诉其他应用程序应该使用哪些用户凭据来验证用户身份。

现在我被 PHP 会话管理困住了:现有的 php 应用程序由一个 index.php 组成,其中包括几个(100 个中的一些)其他 php 文件并执行其功能。有一个会话管理(session_start() 等)。

我想要做的是调用带有一些参数的页面调用signin.php。根据之前是否登录过php应用程序,我只想重定向到index.php,但我无法获取会话变量。

我的 signin.php 必须是什么样子才能访问 index.php 中使用的会话变量。这是我迄今为止尝试过的:

<?php
    // session_start(); tried it with or without it
    if($_SESSION['user_id'] != "")
    {
        header('Location:index.php');
    }
    else
    {
          echo "no redirect";
    }
?>

我总是打印“无重定向”。

或者我的想法是错误的,当不涉及发布/获取操作时,无法从 php 中的另一个页面访问会话变量?

也许我应该说我的 PHP 能力有点有限。

【问题讨论】:

    标签: php session redirect


    【解决方案1】:

    确保您拥有正确的 cookie 名称(默认为 PHPSESSID)。您可以使用 session_name() 更改它。
    另外:你应该打电话给session_start(),所以即使 session.auto_start 关闭,你的代码也能正常工作。

    【讨论】:

    • 谢谢,缺少 session_name()
    【解决方案2】:

    你的脚本看起来不错,我不知道为什么它不能工作,除非在使用会话之前没有初始化“session_start()”。

    另外,您在哪里定义会话?检查“session_start()”是否也已在那里初始化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 2011-05-20
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多