2015-01-12 66 views
0
<?php 
if($_SESSION['IS_LOGEDIN'] == 'Y') 
{ 
header("location:index.php?page=home"); 
exit(); 
} 
?> 

我有問題的人,我有這個登錄代碼和這個錯誤,當我想要進入該頁面。會話已經開始 - 忽略session_start()Xampp

會話已經開始 - 忽略session_start()。

我試圖使代碼通過這種方式,但是當我想去的頁面上,不希望加載:

<?php 
    if(!isset($_SESSION['IS_LOGEDIN']) == 'Y') 
    { 
     session_start(); 
header("location:index.php?page=home"); 
    exit(); 
    } 
?> 

有什麼解決辦法?

+0

你已經摧毀了會話,當他們註銷? – NoLiver92

+0

如果你在包含的/必需的文件中包含'session_start();'那麼可能會導致它。你應該把'session_start();'放在頂部。加上這個'if(!isset($ _ SESSION ['IS_LOGEDIN'])=='Y')'你應該使用2個條件,而不是一個。檢查是否設置,'&&'如果等於。 –

回答

2

你的代碼是完全錯誤:

if(!isset($_SESSION['IS_LOGEDIN']) == 'Y') 
    session_start() 

您啓動會話您嘗試測試的值是(大概)會話。同樣,isset()返回一個布爾值true/false。它永遠不會返回一個字符串,它會不是返回您正在測試的變量中可能設置的任何值。所以基本上你有if (true/false == 'Y')這是沒有意義的。

你可能想要更多的東西是這樣的:

session_start() 
if (!isset($_SESSION['IS_LOGEDIN']) || ($_SESSION['IS_LOGEDIN'] != 'Y')) { 
    header('....'); 
} 

「如果用戶從來沒有登錄或沒有登錄,然後重定向」。

+1

正如我所說; *在這麼多的單詞* ;-) –

+0

或者它的反向等價物if(isset($ _ SESSION ['IS_LOGEDIN'])&&($ _SESSION ['IS_LOGEDIN'] =='Y')){// do something} else {//做一些不同的事情},這可能是OP想要實現的。儘管OP想達到什麼目標還有點不清楚。他們發佈了兩個不同的代碼塊;哪一個是好的/壞的,或者兩者都是人們的猜測。 *會話已經開始*通常意味着有'session_start();'的另一個副本。 –

0

你可以嘗試

<?php 
session_start(); //must be at the start of the page 
     if(!isset($_SESSION['IS_LOGEDIN']) or empty($_SESSION['IS_LOGEDIN'])) { 
     $_SESSION['IS_LOGEDIN'] = 'Y'; 
     header("location:index.php?page=home"); 
    exit(); 
     } 
    ?> 
相關問題