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文件中使用电子邮件会话变量(用于注销,显示信息等),如果我无法使用它这个简单的例子我将无处可去。
答案 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