2009-06-07 54 views
0

這是一個小菜鳥問題,但..它有時會發生在每個人。PHP:用戶登錄系統/檢查用戶是否有訪問頁面

我從來沒有與$ _SESSION工作這麼一次,我需要一個登錄系統我用Dreamweaver中做一個給我。

我有一個頁面,他要求輸入用戶名和密碼。 如果登錄成功,則轉到其他頁面。否則它在登錄頁面中說。

問題是,曾經工作過的登錄系統現在無法工作。 因爲他留在登錄頁面。我做了一個「echo $ _SESSION ['MM_Username'];」

並沒有返回。所以我認爲這意味着我沒有創建用於訪問的cookie?

對不對?我認爲會話中的回聲會顯示一些內容。

嗯,我可以幫助一些人嗎?也許一個簡單的登錄系統。不是Dreamweaver記錄。

我會在登錄頁面發佈用戶登錄代碼。

// *** Validate request to login to this site. 
if (!isset($_SESSION)) { 
    session_start(); 
} 

$loginFormAction = $_SERVER['PHP_SELF']; 
if (isset($_GET['accesscheck'])) { 
    $_SESSION['PrevUrl'] = $_GET['accesscheck']; 
} 

if (isset($_POST['username'])) { 
    $loginUsername=$_POST['username']; 
    $password=$_POST['passe']; 
    $MM_fldUserAuthorization = "power"; 
    $MM_redirectLoginSuccess = WWW."/administrador"; 
    $MM_redirectLoginFailed = WWW."/login"; 
    $MM_redirecttoReferrer = false; 
    mysql_select_db($database_dbconnect, $dbconnect); 

    $LoginRS__query=sprintf("SELECT username, passwd, power FROM `user` WHERE username=%s AND passwd=%s", 
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

    $LoginRS = mysql_query($LoginRS__query, $dbconnect) or die(mysql_error()); 
    $loginFoundUser = mysql_num_rows($LoginRS); 
    if ($loginFoundUser) { 

    $loginStrGroup = mysql_result($LoginRS,0,'power'); 

    //declare two session variables and assign them 
    $_SESSION['MM_Username'] = $loginUsername; 
    $_SESSION['MM_UserGroup'] = $loginStrGroup;  

    if (isset($_SESSION['PrevUrl']) && false) { 
     $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; 
    } 
    header("Location: " . $MM_redirectLoginSuccess); 
    } 
    else { 
    header("Location: ". $MM_redirectLoginFailed); 
    } 
} 

我工作過。它會在$ MM_redirectLoginSuccess和$ MM_redirectLoginFailed中看到的更改以及數據庫中沒有任何更改。

如果它累了一些。只需發佈一個簡單的登錄用戶代碼,我發現了一些但不好的。剩下的就是我。

你知道它的奇怪嗎?有效。我救了,然後關掉電腦,然後當我回來沒有工作。

再次感謝。

+0

這個問題已經得到解答,但請自己幫助未來。切換到可讓您逐行調試的IDE。我使用Xdebug使用NetBeans。它會顯示局部變量和所有內容。 – 2009-06-07 12:35:28

回答

2

我認爲你的數據庫正在運行?

否則剛開始通過代碼去,當調試變量嘗試使用的var_dump($ VAR)這樣,你會看到的類型(特別是如果它爲空)的變量,你正在調試。

$ LoginRS__query - echo this,查看正在生成的查詢。通過你自己的數據庫運行,看看會發生什麼。

header(「Location:」。$ MM_redirectLoginSuccess); - 請記住,如果有任何數據已發送(變量回顯等),這將無法重定向用戶,因爲標題已經被髮送。

0

感謝您的幫助。它作爲某種衝突,不知道哪一個,我沒有太多時間花在那個上面,我不得不快速地工作。

我放在這個代碼,我已經發布了第一碼所包含的用戶電力檢查,我沒有使用它,因爲我只能使用一次的管理面板結束了。

我刪除了該部分,結果證明確定。

// *** Validate request to login to this site. 
if (!isset($_SESSION)) { 
    session_start(); 
} 

$loginFormAction = $_SERVER['PHP_SELF']; 
if (isset($_GET['accesscheck'])) { 
    $_SESSION['PrevUrl'] = $_GET['accesscheck']; 
} 

if (isset($_POST['username'])) { 
    $loginUsername=$_POST['username']; 
    $password=$_POST['passe']; 
    $MM_fldUserAuthorization = ""; 
    $MM_redirectLoginSuccess = WWW."/administrador"; 
    $MM_redirectLoginFailed = WWW."/login"; 
    $MM_redirecttoReferrer = false; 
    mysql_select_db($database_conn, $dbconnect); 

    $LoginRS__query=sprintf("SELECT username, passwd FROM `user` WHERE username=%s AND passwd=%s", 
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

    $LoginRS = mysql_query($LoginRS__query, $dbconnect) or die(mysql_error()); 
    $loginFoundUser = mysql_num_rows($LoginRS); 
    if ($loginFoundUser) { 
    $loginStrGroup = ""; 

    //declare two session variables and assign them 
    $_SESSION['MM_Username'] = $loginUsername; 
    $_SESSION['MM_UserGroup'] = $loginStrGroup;  

    if (isset($_SESSION['PrevUrl']) && false) { 
     $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; 
    } 
    header("Location: " . $MM_redirectLoginSuccess); 
    } 
    else { 
    header("Location: ". $MM_redirectLoginFailed); 
    } 
} 

現在我只能做自己的力量檢查系統,但那不會是一個問題。

謝謝。