【问题标题】:How to access SESSION variables throughout PHP files?如何在 PHP 文件中访问 SESSION 变量?
【发布时间】:2016-07-05 20:50:10
【问题描述】:

file1.php

<?php
session_start();
$email = $_POST['email'];   
$password = $_POST['pass'];  

$_SESSION["email"] = $email;  
$_SESSION["pass"] = $password;  

//echo $_SESSION["email"];
header("location:file2.php");
?>

file2.php

<?php
session_start();

$email = $_SESSION["email"];

echo $_SESSION["email"];
?>

我想显示用户登录时使用的电子邮件。错误在 file2.php 的第二行显示“未定义的索引电子邮件”。我看过的所有地方都说将 session_start() 放在每个文件的顶部,并在 file1.php 中创建会话,然后通过 file2.php 的第 2 行访问它。

我能想到的唯一让这个不起作用的是它没有使用 HTML。我有一个 android 应用程序,用户在其中输入他们的电子邮件和密码。我的应用程序将凭据移交给 file1.php。我知道它是正确的,因为如果我取消注释 file1.php 的第 6 行,回显响应就会正常工作。由于某种原因,它不会在 file2.php 中回显。

我需要这个工作的原因是因为我希望能够在任何 php 文件中使用电子邮件会话变量(用于注销、显示信息等),如果我不能让它在这个简单的情况下工作例如,我将无处可去。

【问题讨论】:

  • I have an android app where the user enters their email and password. My app hands off the credentials to file1.php 那么应用程序是否平等地访问 file2.php,或者您是否以其他方式这样做?
  • 否 应用不直接访问file2.php。这就是为什么我希望能够做这个简单的例子,因为我需要每个 php 页面都知道哪个电子邮件当前登录用于其他查询目的。该应用程序访问某些单独的 php 页面以获取不同的内容,但我需要能够根据在 file1.php 中输入的电子邮件查询数据库。

标签: php session session-variables


【解决方案1】:

会话通过 cookie 支持工作,你的 android 应用程序的请求类是否支持这个?

您的客户端似乎向file1.php 发送请求,然后服务器响应cookie 中的会话ID,然后您的应用程序重定向到file2.php。通常,浏览器会发送先前的会话 id 来告诉服务器哪个会话属于自己。请检查您在请求 file2.php 时是否发送了此 cookie

【讨论】:

    【解决方案2】:

    默认情况下,PHP 中的会话是基于 cookie 的,您的 APP 不使用 cookie,您需要实现另一种方法会话,例如针对数据库的自生成令牌,可能使用 REST 框架。

    另一种解决方案可以模拟带有标头的 cookie,但我不知道这在 Android 中是否可行

    【讨论】:

      【解决方案3】:

      网站上有几个类似的问题(例如this)。他们建议使用isset 方法来确保您的会话变量可用。

      在你的情况下,它可以在file1.php中的header调用之前添加,所以

      if (isset($_SESSION['email'])) {
          header("location:file2.php");
      }
      

      【讨论】:

        猜你喜欢
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多