2012-03-31 53 views
1

我正在爲客戶端登錄系統,我遇到了一個問題,我不確定如何解決。我已經設置好了,當用戶試圖訪問某個目錄的index.php時,他們需要登錄。我已經這樣做的代碼是:PHP登錄腳本 - 可能的會話錯誤

<?php 
    session_start(); 
    if(!$_SESSION['myusername']){ 
     header("location:Login_admin.php"); 
    } 
?> 

在Login_admin.php頁,還有用行動=「checklogin.php」的形式。這裏是它連接到數據庫,並開始在那裏它存儲了用戶名會話:()

if($count==1){ 
    session_start(); 
    // Register $myusername, $mypassword and redirect to file "login_success.php" 
    $_SESSION['myusername']; 
    $_SESSION['mypassword']; 
    header("location:index.php"); 
} 

原來上面的代碼不具備的session_start,所以我說的是,在試圖解決我的問題。

實際的問題是會話沒有註冊。如果我轉到導演的其中一個頁面(他們都有頂部的第一段代碼)並登錄,就會像我想要的那樣發送給index.php,但是當我嘗試返回該頁面時它使我再次登錄。有一次,我在索引頁上獲得了第一段代碼,即使登錄了正確的日誌,它也會循環回登錄頁面。

我被一個朋友看到了這個腳本,並沒有真正改變太多。本來劇本有:

session_register("myusername"); 

但一些調試後,我把它改爲:

$_SESSION['myusername']; 

最後一點,我不是專家的問題可能認爲是一個愚蠢的錯誤,但對於生活我無法弄清楚。

在此先感謝!

+0

下面的兩個答案都幫助我解決了這個問題。多謝你們! – 2012-03-31 17:18:28

回答

1

$_SESSION['myusername']; 

行不絕對沒有
分配一個值,會話變量,你必須分配一個到會話變量
通常的方式數值將分配給變量在PHP中

+0

噢好吧,我會試試 – 2012-03-31 17:10:45

+0

正確的方法是:$ _SESSION ['myusername'] = $ myusername; ? – 2012-03-31 17:12:36

1

您必須給每個會話變量賦值

$_SESSION['myusername'] = 'thename'; 
$_SESSION['password'] = '*******';