2013-04-16 216 views
0

我遇到了PHP和會話問題。這是我的dictionary.php代碼。PHP會話問題

<?php 
if(!isset($_SESSION['auth'])){ 
$_SESSION['auth'] = 0; 
} 
if($_SESSION['auth'] == 0){ 
header("Location: index.php"); 
} 
?> 

因此,有這應該會話「身份驗證」設置爲0或1的index.php:

<?php 
    $msg = ""; 

//Password handler 
if(!isset($_POST['password'])){ 
    $password = ""; 
}else{ 
    $password = $_POST['password']; 
} 

if(!isset($_SESSION['auth'])){ 
    $_SESSION['auth'] = 0; 
} 

//Username handler 
if(!isset($_POST['username'])){ 
    $username = ""; 
}else{ 
     $username = $_POST['username']; 
    if($username == "potato" && $password == "poteto"){ 
     $_SESSION['auth'] = 1; 
     header("Location: dictionary.php"); 
    }else{ 
     $msg = "<br /> 
<font color=\"#FF0000\">Invalid username or password!</font><br />"; 
    } 
} 

if($_SESSION['auth'] == 0){ 
     header("Location: dictionary.php"); 
} 

?> 

(以上可能是不好的做法或東西,但我只是爲了一個學校項目,我不希望其他人看到文件dictionary.php。)

index.php使用POST方法的形式發送$username$password,以防萬一你沒有'尚未注意到。

當我輸入登錄信息「馬鈴薯」和「poteto」時,它將我重定向到dictionary.php,但立即將我引回index.php。我試過調整上面的代碼,但沒有運氣。

如果有人需要我向他們展示此信息,那麼我可以提供一個URL。

謝謝。

+3

我在任何地方都看不到'session_start()'。首先解決它。閱讀:http://php.net/manual/en/session.examples.basic.php –

+0

「錯誤310(net :: ERR_TOO_MANY_REDIRECTS):有太多的重定向。」 – Raymonf

+0

@RBLXDev:你已經創建了一個重定向循環。這些對於排除故障來說不是那麼簡單,但是它有什麼用處,現在你需要麻煩地拍攝它。 – hakre

回答

2

正如在評論中提到的,設置session_start()。此外...

在最終的index.php您重定向到dictionary.php:

if($_SESSION['auth'] == 0){ 
     header("Location: dictionary.php"); 
} 

在dictionary.php爲相同的條件下,你重定向到的index.php:

if($_SESSION['auth'] == 0){ 
    header("Location: index.php"); 
} 

因此,無論何時您的用戶處於01​​的情況下,都會導致無限重定向。你需要清理它。

+0

謝謝!那是那個問題?我一直在重定向兩次? – Raymonf

0

你應該讓你的重定向功能多一點舒適:

​​3210

這不僅將提供更好的重定向響應消息,它也可以讓你(用於調試)禁用header(...);線(例如,通過評論它),所以你的瀏覽器不再進入重定向循環。

只是

site_redirect( 「dictionary.php」)取代像

header("Location: dictionary.php"); 

的電話;

,這樣只有一個header()呼叫你所有的腳本不再,這是site_redirect()功能,因此您可以在一箇中心位置影響重定向。