2013-02-20 289 views
0

在提到我的問題之前,我會先在這裏寫下我的登錄腳本。PHP登錄腳本問題

我的登錄頁面的腳本: -

<?php 
include_once('core.inc.php'); 
if(loggedin()) 
{ 
header('Location:index.php'); 
} else { 
include_once('connection.php'); 
if($_POST['parse']=="login") 
    { 
    if(isset($_POST['username']) && isset($_POST['password'])) 
     { 
      $username=$_POST['username']; 
      $password=$_POST['password']; 
      if(!empty($username) && !empty($password)) 
      { 
      $username=strip_tags($username); 
      $username=mysql_real_escape_string($username); 
      $password=strip_tags($password); 
      $password=mysql_real_escape_string($password); 
      $hash_password=md5($password); /* It will encrypt the password enterd by user in to 15 digit combination of character and number. Then the sql command will be generated to find the appropriate user according to their login details. It will search for the user details in the user table. */ 
      $query="SELECT `id` FROM `user` WHERE `Email`='".$username."' AND `Hash_password`='".$hash_password."' AND `Approved`=1"; 
      $query_run=mysql_query($query); 
      $mysql_num_rows=mysql_num_rows($query_run); 
      if($mysql_num_rows == 1) 
       { 
       $user_id=mysql_result($query_run,0,'id'); 
       $_SESSION['user_id']= $user_id; 
       header('Location:http://leadstool.net/profile/index.php'); 
       } else { 
         print "<script type=\"text/javascript\">"; 
         print "alert('Email Id and Password Combination is wrong.')"; 
         print "</script>"; 
       } 
      } 
     } 
    }// loop for parse ends here 
}// 1st condition ends here 
?> 

而且core.inc.php文件腳本是: -

<?php 
ob_start(); 
include_once('connection.php'); 
session_start(); 
$current_file=$_SERVER['SCRIPT_NAME']; 
if(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER'])) 
{ 
$http_referer=$_SERVER['HTTP_REFERER']; 
} 
function loggedin() 
{ 
    if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])) 
    { 
    return true; 
    } else { 
    return false; 
    } 
} 

function getfield($field) 
{ 
if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])) 
    { 
    $query="SELECT `$field` FROM `user` WHERE `id`='".$_SESSION['user_id']."'"; 
    if($query_run=mysql_query($query)) 
     { 
     if($query_result= mysql_result($query_run, 0,$field)) 
      { 
      return $query_result; 
      } 
     } 
    } 

} 
?> 

,首先讓我解釋一下上面的代碼的程序流程:
步驟1:用戶將輸入他/她的登錄詳細信息。如果找到電子郵件ID和密碼組合匹配,則會創建用戶會話。

第二步:現在,在爲用戶創建會話後,用戶將立即重定向到他/她的個人資料頁面。

第3步:由於用戶已登錄,因此他/她將單擊菜單欄中的主頁按鈕。然後,用戶將只能重定向到配置文件頁面。由於用戶會話已處於活動模式。因此,用戶不被允許查看主頁的內容,而不是該用戶將被重定向回到簡檔頁面。

但這裏的問題是,如果用戶第一次登錄他/她的會話沒有正確創建。因此,一旦用戶點擊該按鈕,他/她將被重定向回主頁。但它不會發生。用戶只能重定向到配置文件頁面。由於在主頁腳本中,我正在檢查用戶會話的詳細信息,如果會話處於活動狀態,用戶將只被重定向回配置文件頁面。

但是,主要問題從這裏開始,如果同一用戶正在嘗試使用相同的登錄信息進行登錄。然後代碼沒有問題。這意味着,如果允許單個用戶同時登錄兩次,那麼代碼沒有問題。所以,現在我想知道錯誤在哪裏?

所以,這裏是我的問題是: -
Q1。無論我的腳本是否有問題,還是瀏覽器兼容性問題? Q2。無論哪種情況,可能的解決方案是什麼?

我試圖解釋這個問題。但如果仍然我在這裏失去了一些東西,然後請去網站http://www.leadstool.net。成功註冊後,請嘗試登錄一次,然後單擊菜單欄中的鉛索盒按鈕。我想你會發現那裏的錯誤。

+1

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。請參閱[**紅框**](http:// j。熔點/ Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://www.brightmeup.info/article.php?a_id=2)。 – insertusernamehere 2013-02-20 20:26:40

+0

好的.. thanx我會牢記:) – 2013-02-20 20:29:37

回答

0

可能性是您的腳本可能有一些錯誤。如果你已經上傳你的主頁的代碼會更好。無論如何,讓我告訴可能的解決方案。

請檢查您的主頁上有以下代碼在它:

include_once('core.inc.php');   
    session_start(); 
    if(!loggedin()) 
    { 
     header('Location:[your homepage url]'); 
    } 

,或者使用下面的代碼。

session_start(); 
    if(isset['user_id']) 
    { 
     header('Location:[your homepage url]'); 
    }