2015-04-26 101 views
2

我的giris.php,名爲ajax,並獲得url:giris_script.php。如果用戶名和密碼正確,則啓動會話。我的代碼如下:會話無法從瀏覽器識別

<?php 
require "config.php"; 
require "Cgiris.php"; 
require "security.php"; 


$username = security($_POST["username"]); 
$password = security($_POST["password"]); 
$password = md5($password); 

$obj = new Giris; 
$result = $obj->control($username, $password); 
if($result){ 
    @session_start(); 
    $_SESSION["admin"]= $username; 
} 
echo json_encode($result); 
?> 

而其他頁面控制會話,但找不到任何會話:

if (session_status() == PHP_SESSION_NONE) { 
    session_start(); 
} 
if(!isset($_SERVER['HTTP_REFERER'])) header("refresh:0;url=404.php"); 

require "config.php"; 
require "Cayarlar.php"; 

$obj = new Ayarlar; 
$admin = $obj->getAllInfo(); 
$user = $admin["username"]; 

if(!isset($_SESSION['admin']) || $_SESSION['admin'] != $user) header("refresh:0;url=404.php"); 

我打印$ _SESSION [「admin」的]篩選,但沒有顯示。

我該如何解決?

+0

你爲什麼要抑制來自'session_start()'的錯誤?如果在每個頁面的頂部都有'session_start()',或者在每個頁面的頂部都包含config.php,那麼你可能有意義。 – Devon

回答

0

這是一個好主意,把

session_start(); 

在你的PHP代碼的頂部。不要把它放在條件陳述中。換句話說,在做其他事情之前總是先開始會話。您可以將其從您的(例如)刪除它

if($result){ 

    $_SESSION["admin"]= $username; 
} 
+0

*必須始終出現在您的php代碼的頂部*否,它不一定在頂部!它只是在你訪問'$ _SESSION'數組之前! – Rizier123

0

因爲session_start();不是頁面的頂部。因此,它不設置會話

$obj = new Giris; 
$result = $obj->control($username, $password); 
if($result){ 
    @session_start();// This part must be top of the page !!! 
    $_SESSION["admin"]= $username; 
} 

在session_start應該是最高的頁面 例如在你的index.php的;

<?php 
session_start(); 

// and you can set your session if there was not any problem you will see your session 
?>