[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: автологин
Karpo
Прочитал много статей о сессиях и куках,но так и не понял одного: выставляет ли функция session_start () куки или нет.В статьях пишут,что функция автоматически выставляет куки,но время их жизни по умолчанию 0.Какой тогда в них смысл,если переменные сессии можно передавать и в GET запросе.В частности интересует механизм автологина.Нужно ли мне пользоваться функцией setcookie или нужно просто изменить время жизни куков выставляемых функцией session start?Разъясните ситуацию,плиз



Спустя 18 дней, 16 часов, 12 минут, 52 секунды (18.10.2010 - 12:55) Dron19 написал(а):
вот код который я сам написал для автологина и авторизации, если поможет, ставь мне + в карму

<?
# запускаем сессии
session_start();
# подключаем MySQL
require "db.php";
// Если существуют куки, то выполняем автовход!
if(isset($_COOKIE['adminauto']))
{
$nik = $_COOKIE['adminnik'];
$password = $_COOKIE['adminpassword'];
$_SESSION['adminnik'] = $nik;
$_SESSION['adminpassword'] = crc32(crypt(base64_encode(strrev(md5($password)))));
}
// Если переменные пустые, то запрещаем вход
if(isset($_POST['auto'])) {
if(empty($nik) or empty($pass)) {exit("<script language='javascript'>alert('Вы попытались получить доступ к Чату, но замечено, что Вы не ввели какое-то из полей, пожалуйста заполните их!');</script><head><meta http-equiv='refresh' content='0; URL=admin.php'></head>");}
// Иначе если не пустые, то создаем куки
else
{
$result = mysql_query("SELECT nik,password FROM admin WHERE nik='$nik' and password='$pass'");
if(mysql_num_rows($result) > 0)
{
$auto = $_POST['auto'];
setcookie("adminauto","auto",time()+9999999);
setcookie("adminnik",$nik,time()+9999999);
setcookie("adminpassword",$pass,time()+9999999);
}
else
{
die("<script language='javascript'>alert('Вы попытались получить доступ к Чату, но те данные которые Вы ввели, не совподают с правильными! Пожалуйста введите правильные!');</script><head><meta http-equiv='refresh' content='0; URL=admin.php'></head>");
}
}
}

# если пользователь ввел данные, то проверяем их
if(isset($go))
{
# принимаем данные через POST
if (isset($_POST['nik'])) {$nik = $_POST['nik'];}
if (isset($_POST['pass'])) {$pass = $_POST['pass'];}
# проверяем нет ли пустых полей
if(empty($nik) or empty($pass))
{exit("<script language='javascript'>alert('Вы попытались получить доступ к Чату, но замечено, что Вы не ввели какое-то из полей, пожалуйста заполните их!');</script><head><meta http-equiv='refresh' content='0; URL=admin.php'></head>");}
# если их нет, то запрашиваем введенные данные из базы, если такие есть, то создаем сессии
$result = mysql_query("SELECT nik,password FROM admin WHERE nik='$nik' and password='$pass'");
if(mysql_num_rows($result) > 0)
{
# так как сессии уязвимы от взлома и просмотра введенного в них, мы пять раз зашифровываем поле с паролем
# при всем при этом при каждом заходе пароль генерируется по новому

$_SESSION['adminnik'] = $nik;
$_SESSION['adminpassword'] = crc32(crypt(base64_encode(strrev(md5($pass)))));}
else {exit("<script language='javascript'>alert('Вы попытались получить доступ к Чату, но те данные которые Вы ввели, не совподают с правильными! Пожалуйста введите правильные!');</script><head><meta http-equiv='refresh' content='0; URL=admin.php'></head>");}}
# проверяем авторизован ли пользователь, если нет выдаем окошко авторизации
if( !isset($_SESSION['adminnik']) or !isset($_SESSION['adminpassword']) ) {
echo "<br><br><br><br><br><br><br>
<table bgcolor='#EAF3FF' width='300px' align='center' style='border:1px solid #000000; padding:10px;'>
<tr><td><strong>Вход</strong></td></tr><br>
<form method='post'><tr bgcolor='#F9F8FD'><td>
<div style='font-size:11px; font-family:Verdana; color:#424242;'>Ваш ник:</div></td><td>
<input style='border:1px solid #B3B9C3; font-size:12px;' type='text' name='nik'></td></tr>
<tr bgcolor='#F9F8FD'><td>
<div style='font-size:11px; font-family:Verdana; color:#424242;'>Ваш пароль:</div></td><td>
<input style='border:1px solid #B3B9C3; font-size:12px;' type='password' name='pass'></td></tr><tr><td>
<input type='checkbox' name='auto' cheked> Автовход<br>
<input style='border:1px solid #000000; color:#3A4F6C; font-weight:700; padding:0px; background-color:#F0F5FA; margin-top:5px;' type='submit' name='go' value='Войти'></form>
</td>
</tr>
</table>
<br><table bgcolor='#EAF3FF' width='500px' align='center' style='border:1px solid #000000; padding:10px;'><tr align='center'><td><strong style='font-size:14px;'>Забыли пароль?</strong></td></tr><form method='post' action='newpass.php'><tr align='center'><td bgcolor='#F9F8FD' style='padding-bottom:7px;'><strong style='font-size:11px; font-family:Verdana;'>Введите Ваш email:   </strong><input type='text' name='email' style='border:1px solid #B3B9C3; font-size:11px; font-family:Verdana; padding:1px; margin-top:5px;'>  <input type='submit' style='border:1px solid #000000; color:#3A4F6C; font-weight:700; padding:0px; background-color:#F0F5FA; margin-top:5px;' name='newpass' value='Получить пароль!'></form></td></tr><tr><td align='center' style='font-size:11px; font-family:Verdana; color:#FF0000;'>* Вам на email будет выслан новый пароль!</td></tr></table>
"
;
exit();
}
?>

Куки всегда по умолчанию живут 0 сек, но в функции setcookie можно задать время ее жизни.

Спустя 2 часа, 7 минут, 46 секунд (18.10.2010 - 15:03) aH6y написал(а):
Dron19
как можно добавлять в сессию ник и пароль еще не проверив есть ли такая пара в базе?
и зачем таблицу в одну строку писать?

Спустя 1 час, 4 минуты, 57 секунд (18.10.2010 - 16:08) arvitaly написал(а):
Dron19,

Вы когда нибудь подбирали md5?

Спустя 4 часа, 13 минут, 21 секунда (18.10.2010 - 20:21) ИНСИ написал(а):
Цитата
$_SESSION['adminpassword'] = crc32(crypt(base64_encode(strrev(md5($password)))));

очень ЖЕСТКО smile.gif

Спустя 1 минута, 50 секунд (18.10.2010 - 20:23) twin написал(а):
Dron19
Цитата
вот код который я сам написал для автологина и авторизации, если поможет, ставь мне + в карму
За такой код не плюс в карму, а ремнем по попе. smile.gif

Спустя 17 минут, 3 секунды (18.10.2010 - 20:40) kirik написал(а):
Цитата (welbox2 @ 18.10.2010 - 12:21)
Цитата
$_SESSION['adminpassword'] = crc32(crypt(base64_encode(strrev(md5($password)))));

очень ЖЕСТКО smile.gif

Невероятно жестко! biggrin.gif
Еще и SQL-инъекциями попахивает..

Спустя 2 часа, 33 минуты, 43 секунды (18.10.2010 - 23:14) aH6y написал(а):
Dron19
никогда в сессию не записывай пароль.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.