标题重定向后会话丢失

时间:2015-05-16 08:21:23

标签: php session

我有两页:

  • page1.php
  • doLogin.php

page1有一个doLogin.php按钮,其中包含必须完成登录的社交平台。

Button 1: doLogin.php?social=twitter 
Button 2: doLogin.php?social=instagram

doLogin页面类似于:

session_start();
if($_REQUEST['social'] == 'twitter') {
$user->auth('twitter');
}

if($_REQUEST['social'] == 'instagram') {
$user->auth('instagram');
}

header('Location: page1.php');
exit();

auth()方法在会话中保存用户名。如果我在重定向之前执行会话的var_dump,我会正确获取所有数据。例如:

var_dump($_SESSION);
die();
header('Location: page1.php');
exit();

如果我在登录instagram之后在page1.php的最开始处执行了var_dump和die,则会话为空。如果使用twitter登录,则会保留会话数据。例如:

<?php
var_dump($_SESSION);
die();

2 个答案:

答案 0 :(得分:1)

检查重定向网址。重定向到相同的URL? 在使用会话之前始终使用session_start()。

http://localhost上的会话注册与http://127.0.0.1不同。

答案 1 :(得分:1)

我在if语句中使用了标题重定向,后面没有退出函数。总是在标题重定向后使用exit语句,否则将处理整个php页面。