如何在整个PHP文件中访问SESSION变量?

时间:2016-03-18 22:53:46

标签: php session session-variables

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"];
?>

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

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

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

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

另一个解决方案可以使用标头模拟Cookie,但我不知道这是否可以在Android

中使用

答案 2 :(得分:0)

会话通过cookie支持工作,您的Android应用程序的请求类是否支持此功能?

似乎您的客户端向file1.php发送请求,然后在cookie中发送具有会话ID的服务器响应,然后您的应用程序重定向到file2.php。通常情况下,浏览器发送先前的会话ID以告知服务器哪个会话属于自己。请在检索file2.php

时检查您是否发送了此cookie