2016-09-08 2 views
1

현재 약간의 문제가 있습니다. 라우터를 통해 작동하는 웹 사이트가 있지만 나와 내 동생이 함께 내 웹 사이트에있는 경우 동일한 계정/사용자로 로그인 한 것처럼 보입니다.로그인 세션이있는 복수 사용자

예 : 로그 아웃했습니다. 그럼 내 동생이 로그 아웃되었거나 로그인했습니다. 그녀는 I과 같은 계정으로 로그인했습니다.

내 세션에 문제가 있음을 알고 있으며, 현재 무엇에 대해 배우고 생각하고 있는지 알고 있습니다. 상호 작용하고 일을하는 온라인 사용자가 한 명 이상있는 것처럼 보일 것입니다. 솔직히 말해서, 저는 세션의 표면을 간신히 긁어 냈습니다. 여러 사용자가 동시에 온라인 상태 일 때 어떤 일이 일어나는지 배우려고합니다.

나는 다른 Q를 보았습니다 & 여기에 관해서는, 그러나 나는이 주제에 도움이되는 것을 찾는 것을별로 행운이 없었습니다. 어떤 도움이나 제안도하지 않을 것입니다. 기본 시스템의 결함을 지적합니다.

<?php 
session_start(); 
session_id("userID"); 

if(!isset($_SESSION['login'])) { 
    $_SESSION['login'] = false; 
} elseif($_SESSION['login'] === true) { 
    $query = "SELECT * FROM users WHERE username='{$_SESSION['l-user']}' LIMIT 1"; 
$set = mysqli_query($db->connection, $query); 
$get = mysqli_fetch_assoc($set); 

$_SESSION['l-avatar'] = "{$get['avatar']}"; 
} 


class Registery { 

    // variables 
    public $login; 
    public $user; 
    private $reg; 
    private $log; 

    public function register() { 

    $db = new MySQLDatabase(); 

    if($_SESSION['login'] === false) { 
     $s_user = strip_tags($_POST['user']); 
     $s_pass = strip_tags($_POST['pass']); 
     $s_bio = strip_tags($_POST['content'], "<p><b><i><img><br><a>"); 
     $s_gend = strip_tags($_POST['gender']); 
     $s_age = strip_tags($_POST['age']); 
     $s_u = mysqli_real_escape_string($db->connection, $s_user); 
     $s_p = mysqli_real_escape_string($db->connection, $s_pass); 
     $s_b = mysqli_real_escape_string($db->connection, $s_bio); 
     $s_g = mysqli_real_escape_string($db->connection, $s_gend); 
     $s_a = mysqli_real_escape_string($db->connection, $s_age); 

     $sql = "INSERT INTO users (id, username, password, content, tag, gender, rank, age, date, time) VALUES (NULL, '{$s_u}', '".sha1($s_p)."', '{$s_b}', 'I\'m new! And my name is {$s_u}', '{$s_g}', 'member', '{$s_a}', CURDATE(), NOW())"; 
     $this->reg = mysqli_query($db->connection, $sql); 

     if($this->reg === true) { 
      $_SESSION['login'] = true; 
      $_SESSION['l-user'] = "{$s_u}"; 
     } 
    } 
} 

public function confirm_reg() { 
    if($this->reg === true) { 
     $success = "<div class=\"success\">"; 
     $success .= "<p><b><i class=\"fi-info\"></i></b> Successfully registered.</p>"; 
     $success .= "</div>"; 
     echo "{$success}"; 
    } else { 
     $error = "<div class=\"error\">"; 
     $error .= "<p><b><i class=\"fi-info\"></i></b> Failed to register.<br /><b>NOTE:</b> You may have entered a username that already exists.</p>"; 
     $error .= "</div>"; 
     echo "{$error}"; 
    } 
} 

public function login() { 

    $db = new MYSQLDatabase(); 

    if($_SESSION['login'] === false) { 
     $s_user = strip_tags($_POST['user']); 
     $s_pass = strip_tags($_POST['pass']); 
     $s_u = mysqli_real_escape_string($db->connection, $s_user); 
     $s_p = mysqli_real_escape_string($db->connection, $s_pass); 
     $sql = "SELECT * FROM users WHERE username='{$s_u}' AND password='".sha1($s_p)."' LIMIT 1"; 
     $this->log = mysqli_query($db->connection, $sql); 

     if(mysqli_num_rows($this->log) === 1) { 
      $_SESSION['login'] = true; 
      $_SESSION['l-user'] = "{$s_u}"; 
     } 
    } 
} 

public function confirm_log() { 
    if(mysqli_num_rows($this->log) === 1) { 
     $success = "<div class=\"success\">"; 
     $success .= "<p><b><i class=\"fi-info\"></i></b> Successfully logged in.</p>"; 
     $success .= "</div>"; 
     echo "{$success}"; 
    } else { 
     $error = "<div class=\"error\">"; 
     $error .= "<p><b><i class=\"fi-info\"></i></b> Failed to login.<br /><b>NOTE:</b> You entered the wrong username or password, make sure your capslock is off.</p>"; 
     $error .= "</div>"; 
     echo "{$error}"; 
    } 
} 

public function logout() { 
    $_SESSION['login'] = false; 
    $_SESSION['l-user'] = ""; 
} 

} // end of class 

$user = new Registery(); 
?> 

답변

0

각 세션마다 고유 세션 ID를 만들어야합니다.

+0

그게 내가 생각한 것이지만, _how_에 대해 각 사용자마다 고유 한'session_id '를 설정하는 것에 대해 행운이 없습니다. –