2016-09-08 5 views
1

現在、私は少し問題があります。私は自分のウェブサイトをルータ上で動作させていますが、私と私の姉妹が一緒に私のウェブサイトにいて、同じアカウント/ユーザにログインしているときに表示されます。複数のユーザーのログインセッション

例:私はログアウトしました。その後、私の妹がログアウトするか、ログインして、私と同じアカウントでログインしています。

私は自分のセッションに何か間違っていると知っています。オンラインで複数のユーザーが交流して仕事をしているような気がします。正直言って、私はほとんどセッションの表面に傷ついているだけで、複数のユーザーが同時にオンラインになったときに何が起こるかを知ろうとしています。

と私は他の人を見てきました。&ここでは、このテーマに役立つものは何も見つかりませんでした。私は基本的なシステムに欠陥があることを示唆しています。

<?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

これは私が想像したものですが、各ユーザーに一意の 'session_id'を設定することについては何の幸運もありません。 –

関連する問題