2010-12-01 6 views
0

Est-ce bien comme un air script de connexionPHP 2 personnes se connectant en même temps sur le même ordinateur pt.02

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

Vous devez affecter la valeur de retour de 'get_user()' à quelque chose. Vous aurez également besoin de deux instances distinctes de $ row - '$ row [" nom d'utilisateur "] == $ p1name' et' $ row ["nom d'utilisateur"] == $ p2name' sont des conditions mutuellement exclusives. –

+0

Je suis un peu confus ici ... Pourquoi voudriez-vous vous connecter 2 ppl dans la même session? Votre code ne devrait fonctionner que pour 1 personne (= session) à la fois. Si une nouvelle session est ouverte, un nouvel utilisateur doit être créé pour cette session. Sachez toujours vos mots de passe. Le simple fait de les hacher n'est plus sûr, puisque les tables arc-en-ciel existent. –

+0

une instruction if pour la première ligne, puis une instruction elseif pour la deuxième instance de $ row et je ne peux pas utiliser un ID de session pour les deux utilisateurs à jouer depuis le même ordinateur – hgbso

Répondre

1

est ici un peu peu plus propre idée. Je vous conseille de prendre l'utilisation des exceptions, ils sont grands :)

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

En ce qui concerne les commentaires de « vous ne pouvez pas stocker une valeur de session pour les utilisateurs de deux ZOMG! » bien .. si vous devez le faire, il suffit de les stocker dans quelque chose comme ça .. $ _SESSION ['user1'] $ _SESSION ['user2']. C'est simplement une idée - je n'approuve pas cela.

+1

mais j'ai besoin de prendre 2 utilisateurs de la page html à php pour jouer au jeu ce travail pour deux logint en même temps à partir de la même page – hgbso

+0

Ceci est juste une idée générale de la façon de gérer les utilisateurs. Vous pouvez utiliser un indicateur pour l'utilisateur 1 et l'utilisateur 2 et gérer les variables de session de cette façon. –

+0

Je veux dire que cette fonction prend à la fois l'utilisateur – hgbso

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

Vous avez dû créer des instances des informations utilisateur retournées pour vérifier chaque joueur par rapport au leur.

+0

merci pour l'aide – hgbso

+0

qu'en est-il de mysql_connect ("localhost", "db_user", "db_pass"); mysql_select_db ("DB_name", $ connection); où est-ce que je mets ceci – hgbso

+0

C'est un peu vieux, peut-être le verrez-vous. Actualisé. – CodyRob

Questions connexes