PHP 2 человека одновременно входят в систему с одного компьютера pt.02

0

Это выглядит как логин script

//Player 1 Login username and password
$p1name = $_POST['p1name'];
$p1pass = $_POST['p1pass'];

//player 2 Login username and password
$p2name = $_POST['p2name'];
$p2pass = $_POST['p2pass'];

$connection = mysql_connect("db_host", "db_user", "db_pass");
mysql_select_db("db_name", $connection);

get_user($p1name, $p1pass);
get_user($p2name, $p2pass);

$row = $result;
$found = false;

if(($row["username"] == $p1name && $row["password"] == sha1("$p1pass")) 
   && ($row["username"] == $p2name && $row["password"] == sha1("$p2pass")))
{
  $found = true;
  break;
}

function get_user($username, $password) 
{
    $query = 'SELECT * FROM users';
    $query .= ' WHERE username = ' . mysql_real_escape_string($username);
    $query .= ' AND password = ' . mysql_real_escape_string(sha1($password));
    $result = mysql_query($query);
    return mysql_fetch_assoc($result);
}
  • 0
    Вам нужно присвоить возвращаемое значение get_user() для чего-то. Вам также понадобятся два отдельных экземпляра $ row - $row["username"] == $p1name и $row["username"] == $p2name являются взаимоисключающими условиями.
  • 0
    Я немного запутался здесь ... Почему вы хотите войти 2 чел в одном сеансе? Ваш код должен работать только для 1 человека (= сеанс) одновременно. Если новый сеанс открыт, то для этого сеанса должен быть создан новый пользователь. Также всегда соль ваши пароли. Просто хешировать их больше не безопасно, поскольку существуют радужные таблицы.
Показать ещё 2 комментария
Теги:
login

2 ответа

2
<?php    
// Player 1 Login Information
$p1name = $_POST['p1name'];
$p1pass = $_POST['p1pass'];

// Player 1 Login Information
$p2name = $_POST['p2name'];
$p2pass = $_POST['p2pass'];

// Check user information
$player1 = get_user($p1name, $p1pass);
$player2 = get_user($p2name, $p2pass);

// Has any user been found?
$found = array(
 'player1' => false, 
 'player2' => false
);

// Check if use information matches
if($player1['username'] == $p1name && $player1['password'] == $p1pass) {
 $found['player1'] = true;
}
if($player2['username'] == $p2name && $player2['password'] == $p2pass) {
 $found['player2'] = true;
}

function connect($db_host, $db_name, $db_pass, $db_table) {
    $connection = mysql_connect($db_host, $db_name, $db_pass); 
    mysql_select_db($db_table, $connection); 
}

function get_user($username, $password) {
 $query = 'SELECT * FROM users';
 $query .= ' WHERE username = ' . mysql_real_escape_string($username);
 $query .= ' AND password = ' . mysql_real_escape_string(sha1($password));
 $result = mysql_query($query);
 return mysql_fetch_assoc($result);
}

Вам нужно было создать экземпляры возвращенной пользовательской информации, чтобы проверить каждого игрока против своих.

  • 0
    Спасибо за помощь
  • 0
    как насчет mysql_connect ("localhost", "db_user", "db_pass"); mysql_select_db ("DB_name", $ connection); куда я положу это
Показать ещё 1 комментарий
1

Вот немного чистая идея. Я предлагаю воспользоваться исключениями, они великолепны:)

function Login($uname, $passwd) { 
        $uname = mysql_real_escape_string($uname); 
        $passwd = mysql_real_escape_string($passwd); 

        // we are using sha encryption for user passwords
        $passwd = sha1($passwd); 

        // lookup the user information they specified
        $sql = mysql_query("SELECT * FROM `users` WHERE uname='$uname' && passwd='$passwd'"); 

        try { 
            // if the username/password combo doesnt work/exist then tell them
            if(!mysql_fetch_assoc($sql)) { 
                $error = new Error(); 
                throw new Exception($error->Login(1));

            // if the password DOES work, then continue the login
            } else { 

                $_SESSION['login'] = 'true'; 
                $_SESSION['uname'] = $uname; 
                redirect(); 
            } 
        } catch (Exception $e) { 
            echo $e->GetMessage(); 
        } 
    } 

Что касается комментариев "вы не можете сохранить значение сеанса для двух пользователей!!! ZOMG!" ну.. если вы ДОЛЖНЫ это сделать, просто сохраните их в чем-то вроде этого. $_SESSION ['user1'] $_SESSION ['user2']. Это просто идея - я не потворствую этому.

  • 1
    но мне нужно взять 2 пользователей со страницы html на php, чтобы играть в игру, будет ли это работать для двух логинтов одновременно с одной страницы
  • 0
    Это всего лишь общее представление о том, как обращаться с пользователями. Вы можете использовать флаг для пользователя 1 и пользователя 2 и таким образом обрабатывать переменные сеанса.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню