2017-05-26 102 views
0

這是我的第一頁。我只是無法讓我的變量到下一頁index.php($ _SESSION ['admin_email'])。變量賦值工作在第一頁上細,在index.php中它總是重定向到的login.phpPHP會話變量不能在兩個頁面工作

<?php 
error_reporting(0); 
session_start(); 
include_once('../_inc/_class/Users.php'); 
$dbUsers = new Users(); 
$uname = htmlspecialchars($_POST['username']); 
$upass = md5($_POST['password']); 
if($uname != "" && $upass != "") { 
    $user = $dbUsers->selectAll("`password` = '".$upass."' and `email` = '".$uname."' and user_type = 'admin'", "1", ""); 
    /*print_r($user);*/ 
    if(!empty($user) && $user[0]->email == $uname && $user[0]->password == $upass) { 
     $_SESSION['admin_email'] = $user[0]->email; 

     /*var_dump($_SESSION['admin_email']);*/ 
    } 
    else { 
     $_SESSION = array();   
     session_destroy();  
    } 

} 
die(header('Location:../index.php')); 
?> 

的index.php

<?php 
error_reporting(E_ALL); 
session_start(); 

if(!isset($_SESSION['admin_email'])) { 
    die(header('Location:./login.php')); 
} 

?> 
+0

的新頁面上,做了'的print_r($ _ SESSION);',以瞭解更多信息 – Akintunde007

+0

你'在其他部分確保您不小心使用'session_destroy()你的if語句? –

+0

你確定你的登錄腳本沒有經過if的else部分嗎?嘗試放置一個死亡()在其他.... –

回答

-3

使用

if(!session_id()) session_start(); 

而是採用普通的

session_start(); 
+1

不是問題的答案 –

+0

正確地查看OP的代碼。 OP可能正在執行'session_destroy'語句。請確認之後再給予解決方案 – Akintunde007

+0

對不起我的壞.... –

0

從你的c ode,它看起來像login.php位於子文件夾內,而不是在index.php所在的根文件夾中。

您正在設置從子文件夾,如果你的php.ini設置或會話值中包含類(Users.php)一些session_set_cookie_params()是故意設置會話路徑該子文件夾,這會讓外界會話變量不可訪問。

所以嘗試添加session_set_cookie_params並設置$path參數去/

然後將它可用於根文件夾,裏面的所有子文件夾。

欲瞭解更多信息,請查看session_set_cookie_params