PHP 2 человека одновременно входят в систему с одного компьютера pt.02 - PullRequest
0 голосов
/ 01 декабря 2010

Хорошо ли это выглядит как сценарий входа в систему

//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);
}

Ответы [ 2 ]

2 голосов
/ 02 декабря 2010
<?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);
}

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

1 голос
/ 01 декабря 2010

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

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'].Это просто идея - я не потворствую этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...