2013-02-20 5 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 단계 : 사용자가 로그인 세부 정보를 입력합니다. 그리고 이메일 아이디와 비밀번호 조합이 일치하면 사용자 세션이 생성됩니다.

2 단계 : 이제 사용자 세션을 만든 후에 사용자는 즉시 프로필 페이지로 리디렉션됩니다.

스텝 -3 : 메뉴 바에서 홈 버튼을 클릭하면 사용자가 로그인하게되므로, 그런 다음 사용자는 프로필 페이지로 다시 리디렉션됩니다. 사용자 세션이 이미 활성 모드에 있기 때문에 따라서 사용자는이 사용자가 아닌 홈 페이지의 내용을 볼 수 없으며 프로필 페이지로만 리디렉션됩니다.

하지만 사용자가 세션을 제대로 만들지 않은 상태에서 처음 로그인하면 문제가 발생합니다. 따라서 사용자가 해당 버튼을 클릭하면 버튼이 다시 홈 페이지로 리디렉션됩니다. 그러나 그것은 일어나지 않을 것입니다. 사용자는 프로필 페이지로 다시 리디렉션되어야합니다. 홈 페이지 스크립트에서 사용자 세션 세부 정보를 확인 중이므로 세션이 활성 상태 인 경우 사용자는 프로필 페이지로만 리디렉션됩니다.

동일한 사용자가 동일한 로그인 세부 정보를 사용하여 로깅하려는 경우 주요 문제가 여기에서 시작됩니다. 그러면 코드에는 문제가 없습니다. 즉, 단일 사용자가 동시에 두 번 로그인 할 수 있도록 허용하면 코드에 아무런 문제가 없습니다. 이제 버그가 어디 있는지 알고 싶었습니다.

제 질문은 다음과 같습니다. -
Q1. 스크립트에 문제가 있거나 브라우저 호환성 문제가 있습니까? Q2. 두 경우 모두 가능한 해결책은 무엇입니까?

나는이 문제를 설명하려고 노력했다. 하지만 여전히 뭔가가 빠진다면 웹 사이트 http://www.leadstool.net으로 이동하십시오. 성공적으로 등록한 후 한 번 로그인하여 메뉴 막대에서 leadstool 버튼을 클릭하십시오. 나는 거기에 벌레를 발견 할 것입니다.

+1

[** 새 코드 **] (http://bit.ly/phpmsql)에는 mysql_ * 함수를 사용하지 마십시오. 더 이상 유지 관리되지 않으며 공식적으로 사용되지 않습니다 (https://wiki.php.net/rfc/mysql_deprecation). [** 빨간색 상자 **] (http : // j.mp/Te9zIL)? 대신 [* prepared statements *] (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

+0

괜찮아요. 고맙습니다. 나는 계속 명심 할거야. :) –

답변

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]'); 
    } 
관련 문제