2012-05-07 126 views
2
<?php 
//Login Module (Updated, isset now correct) 
session_start(); 
if(!(isset($_SESSION['login']) && ($_SESSION['login'] != ""))) { 
    include('processor/ProcessLogout.php'); 
} else { 
    include('processor/ProcessLog.php'); 
} 
?> 

問題是......它不起作用。我似乎無法讓它驗證爲真正的T_T。我在processor/assess_login.php中設置了$ _SESSION ['login']。 ProcessLog只是一些div的容器,而表單將信息傳遞給asssess_login(然後告訴我登錄是否成功)。一個顯示登錄表單,另一個顯示登出表單。不幸的是,即使我得到了「登錄成功」......它很擔心$ _SESSION ['登錄']拒絕改變爲'1'。 (這就是我在assess_login中如果登錄成功了,如果失敗,我將它設置爲空字符串。似乎無法讓PHP登錄到'stick'

現在據我所知,session_start()應該記住這一點,但由於某種原因。 ..它不oo;所以任何提示我的錯誤狩獵

有編譯錯誤,並帶走了!實際上顯示替代,所以我知道那位'是'的工作,它只是沒有評估真的。

現在...作爲assess_login ...

  if ($db_found) { 
     $member_username = quote_smart($member_username, $db_handle); 
     $member_password = quote_smart($member_password, $db_handle); 

     $sql = "SELECT * FROM $tblname WHERE username=$member_username AND passphrase=$member_password"; 
     $result = mysql_query($sql); 
     $num_rows = mysql_num_rows($result); 

     //Validate there is a user 
     if($result) { 
      if($num_rows == 1) { 
       session_start(); 
       $_SESSION['login'] = '1'; 
       header("location: ../login_success.php"); 

      } else { 
       session_start(); 
       $_SESSION['login'] = ""; 
       header("location: ../login_fail.php"); 

      } 
     } else { 
      $error_msg = "Error Validating User! -1"; 
     }   
    mysql_close($db_handle); 
    } 

軸承牢記它有點埋。正如我以前說過的,我無法登錄登錄,我知道我錯過了一些明顯的東西,如果我能弄清楚什麼,我會被詛咒的。

+0

你是否證實你正在進入''_SESSION ['login']'被設置爲''1''的條件? –

回答

1

你的if語句是不正確的:

if(!(isset($_SESSION['login'])) && ($_SESSION['login'] != "")) 

應該

if(!(isset($_SESSION['login']) && $_SESSION['login'] != "")) 
+0

謝謝......雖然這也不完全正確。 (之前我一直在和這個爭鬥,我以爲我第一次破解它)。我編輯得適當,最後需要一個額外的支架= P – user1379669

+0

@ user1379669你不需要parens中的$ _SESSION ['login']!=「」'。爲了清楚起見,我把它留下了。 – gcochard

0
if(!(isset($_SESSION['login']) && $_SESSION['login'] != "")) 

在這段代碼中你說:如果沒有設置它,它不是空 你想它被設置而不是空的:

if((isset($_SESSION['login'])) && ($_SESSION['login'] != ""))