2016-09-23 4 views
0

동일한 서버에 여러 개의 사이트가 있습니다. 문제는 사용자가 A 사이트에 로그인 할 때 URL에서 B 사이트에 들어가면 콘텐츠를 볼 수 있다는 것입니다. B 사이트 콘텐츠를 보는 사용자를 어떻게 제한 할 수 있습니까?세션이 예상대로 작동하지 않습니다 PHP

아래 내 authenication 코드

function validate_login($email , $password){ 
     global $_config; 
     if(empty($email) or empty($password)){ 
      return false; 
     } 

     //Now perform validation here 
     //$email = mysql_real_escape_string($email); 
     //$password = mysql_real_escape_string($password); 

     $query_obj = new execute_query(); 
     $where = 'email="'.$email.'" and password = md5("'.$password.'")'; 
     $result = $query_obj->select_query(array('*') , 'user' , $where); 

     $user = array(); 

     if($result->num_rows > 0){ 

      $user = array(); 
      while($row = $result->fetch_assoc()) { 
       $user = $row; 
       $user['is_logged'] = true; 
      } 

      session_start(); 
      $_SESSION['user'] = $user; 
      $url = $_config['site_url'].'dashboard.php'; 
      //header('Location :'.$url);die; 
      header("Location: ".$url); 
     } 
     return false; 
    } 

만약 내가 같은 세션을 확인하고 모든 페이지의 상단에.

<?php 
session_start(); 
//echo "<pre>";print_r($_SESSION['user']);die; 
if(!isset($_SESSION['user'])){ 
    $url = $_config['site_url'].'login.php'; 
    //header('Location :'.$url);die; 
    header("Location: ".$url); 
} ?> 

피 : 한 가지 방법은 unique_session_id를 데이터베이스에 저장하고 사용자가 현재 데이터베이스에 속하는지 여부를 확인하는 것입니다. 하지만 좀 더 포괄적이고 나은 솔루션을 원합니다.

감사

+0

시도. – rahul

+0

예,이 옵션도 있습니다. 하지만 좀 더 나은 접근법을 알고 싶습니다. – user1885057

+0

그들은 같은 서버 아래에 있기 때문에, 그곳의 사이트는 계속 존재할 것입니다. 이제는 다른 사이트에 로그인 할 때 다시 로그인 인증을 요청할지 여부에 대한 귀하의 논리가 향상됩니다. – rahul

답변

0

당신은 고유

<?php 
    session_start(); 

    if(!isset($_SESSION['siteA']['user'])) { 
     $url = $_config['site_url'].'login.php'; 
     header("Location: ".$url); 
} 
?> 

당신이해야 할 모든 것을 알고 2 개 개의 사이트를 저장하는 세션에 추가 수준을 추가 할 수 있습니다 것은 siteA에서 확인 코드를 확인하고 siteB 어떤 키 값을 알고 각 사이트에 대해 즉, siteAsiteB 키입니다. 별도의 사이트에서 $ _SESSION [ 'site1_session'], $ _SESSION [ 'site2_session를'] 추가하고 그가 두 번째 사이트를 볼 때 세션 여부 2를 사용할 수 있는지 확인

<?php 
    session_start(); 
    $site = getSiteKeyFromConfig(); 

    if(!isset($_SESSION[$site]['user'])) { 
     $url = $_config['site_url'].'login.php'; 
     header("Location: ".$url); 
} 
?> 
관련 문제