2009-02-07 3 views
3

Как бы я «встроил» автолог в этот скрипт?Cookies PHP

 
if (isset($_POST['login'])) { 
$query = mysql_query(" 
      SELECT * FROM users 
      WHERE user_name = '".mysql_real_escape_string($_POST['username'])."' 
     AND user_password = '".mysql_real_escape_string($_POST['password'])."' 
"); 

/* wrong login information? terminate the script */ 
if (!mysql_num_rows($query)){ 
header("Location: ./"); 
exit(); 
} 

/* set session with unique index */ 
$_SESSION['id'] = mysql_result($query, 0, 'user_id'); 
mysql_query("UPDATE users SET user_online = '1' WHERE user_id = '{$_SESSION['id']}'"); 
header("Location: ./"); 
exit; 
} 
+0

В чем вопрос? –

ответ

-2
//use request so you can link to the page and log the user in. it would be a good idead to use md5() on $_REQUEST['username'] and $_REQUEST['password'] so the password and usernames arent in plain text. see http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html#function_md5 

if (isset($_REQUEST['login'])) { 
$query = mysql_query(" 
      SELECT * FROM users 
      WHERE user_name = '".md5($_REQUEST['username'])."' 
     AND user_password = '".md5($_REQUEST['password'])."' 
"); 
/* wrong login information? terminate the script */ 
// there should only be one row returned with the query 
if (mysql_num_rows($query)!=1){ 
header("Location: ./"); 
exit(); 
} 

/* set session with unique index */ 
$_SESSION['id'] = mysql_result($query, 0, 'user_id'); 
mysql_query("UPDATE users SET user_online = '1' WHERE user_id = '{$_SESSION['id']}'"); 
header("Location: ./"); 
exit; 
} 


//now you can link to the page 
<a href="login.php?login=yes&username=**insert md5 hash of user name here**&password=md5 hash of password">auto login</a> 
+0

Вы не хотите регистрировать кого-либо через GET. Это недостаток безопасности. – Sasha

4

Во-первых, некоторые предложения:

  1. Вы должны хранить пароли в salted hashes, а не открытым текстом.
  2. Возможно, вы захотите изменить способ аутентификации в целом. Может быть хорошей идеей выбрать пароль (в любом случае, не делать «Выбрать *») и сравнить его с засоленным хешем пароля, который пользователь вводил.

Теперь вы спрашиваете, если Я правильно понимаю, как заставить пользователя войти в систему. Основная идея заключается в том, что вам нужно хранить куки-файл с чем-то, что однозначно идентифицирует пользователя (но убедитесь, что оно не может быть легко захвачено), поэтому сделайте его очень длинной строкой , как SHA1 хэш или что-то.) Установите вдали дату истечения срока действия на печенье, чтобы держать пользователь авторизован.

Here is the function you use to set cookies in PHP.

Затем при загрузке страницы, вы можете проверить, существует ли этот файл cookie. Если файл cookie существует, и у пользователя нет переменной SESSION, вы можете назначить ему его.