[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: cookies для авторизации
Rem
Вопсчем у меня возникла проблема при создании скрипта регистрации/авторизации:<br>Когда пользователь авторизуется на сайте, при переходе на следующую страничку все данные о пользователе (и то что он вообще вошёл) теряются. При помощи сессий это сделать довольно долго и сложно. В моём самоучителе по пхп не написано о работе с cookies, поэтому кто-нибудь помогите мне решить эту задачу, используя cookies.<br>Данные:<br>Nik – вводится пользователем (имя)<br>Passpord – вводится пользователем (пароль)<br>Nick – ник пользователя (берётся из БД)<br>Pass – пароль пользователя (берётся из БД)<br>БД - текстовая.<br>И ещё, если не сложно, напишите, как увеличивать время жизни этих cookies, например, до бесконечности или хотя бы на 1 месяц…<br>При этом используется что-то наподобие check’a “Запомнить меня”.<br><br>И ещё небольшой вопрос:<br>У меня есть файл с содержимым:<br><br>
 
<?php
//некий текст
$rating="10";
?>
 

Как организовать запись в файл переменной $rating++ заменяя при этом лишь число "10" на "11" (и т.д.)
Всё испробовал не получается никак...
Заранее спасибо.



Спустя 4 часа, 18 секунд (3.09.2006 - 18:12) vasa_c написал(а):
http://ru.php.net/setcookie

QUOTE
Как организовать запись в файл переменной $rating++ заменяя при этом лишь число "10" на "11" (и т.д.)

Ничего не понятно

Спустя 1 час, 8 минут, 11 секунд (3.09.2006 - 19:20) Rem написал(а):
Т.е заменять значение переменной $rating на значение, большее этой переменной на 1, т.е. $rating++

Спустя 1 минута, 58 секунд (3.09.2006 - 19:22) Rem написал(а):
А насчёт кукисов я понял тока как их создавать, а вот как сделать авторизацию по этим данным въехать никак не могу...:(

Спустя 39 минут, 45 секунд (3.09.2006 - 20:01) vasa_c написал(а):
QUOTE
Т.е заменять значение переменной $rating на значение, большее этой переменной на 1, т.е. $rating++
Всё испробовал не получается никак...

И как именно ты пробывал?

Авторизация не делается по кукам. Авторизация делается по логину и паролю. Единственный момент, это то, что вместо того, чтобы заставлять пользователя каждый раз при входе на сайт вводить логин/пароль от руки их можно запомнить в куках.
Используй сессии. Там ничего сложного.
Читай www.phpfaq.ru/sessions до полного просветления.
Мне кажется, что на данный момент ты сам не до конца понимаешь, чего хочешь добиться.

Спустя 2 часа, 50 минут, 11 секунд (3.09.2006 - 22:52) killich написал(а):
Насколько я понял из чтения одного мануала
более-менее надежная авторизация проходит примерно так:

1. Вводится пароль и логин.
2. Проверяется на другой странице.
3. Если пара верная, то генерируется уникальное случ. число и сохраняется на серваке.
4. Юзверю отсылается это число и хранится в куках.

При входе Юзверя на сайт просматриваются куки (число) и сравниваются с данными на серваке.
Если такое число есть, то регистрация пройдена ==> получает доступ без ввода пароля и логина.

Там много еще всяких мелочей, но общий принцип вроде такой.
Давате для начала сделаем по-тупому. нет никакого сервака и пусть хранится не число, а просто в куках
лежит значение true (доступ) или false(запрет).

Шаг первый.

На странице 1 есть два поля log и pwd.
Поля заполняются и передаются методом POST на стр.2

Шаг второй.

НА 2 СТР.

1. Просмотрим куки, если переменная доступа еще не определена, то установим ее на false.
2. Получим из массива $_POST значения пароля и логина.
3. Проверим эту пару функцией Check_Log_Pwd(), если она вернет true, то в куки
определим переменную доступа на 1 час и установим ее на true.
4. Иначе напишем сообщение об ошибке.

page2.php // в ней будет примерно следующее.
НЕ ПЫТАЙТЕСЬ ЭТО ЗАПУСКАТЬ, НАПИСАЛ ЗА МИНУТУ И КРИВО , НО МОЖЕТ ВСЕ ЖЕ ВАМ ПОМОЖЕТ ЧЕМ НИБУДЬ

<?php>

if ( !isset($_COOKIE['dostup']) )
{
// 60*60 = сек*мин = 3600 сек = 1 час
setcookie( "dostup", false, time() + 60*60 );
}

// Если и то и другое определено тогда
if ( isset($_POST['log']) && isset($_POST['pwd']) )
{
$x = $_POST['log'];
$y = $_POST['pwd'];

// Check_Log_Pwd() вернет true, если пара верна
if( Check_Log_Pwd($x,$y) )
{
setcookie( "dostup", true, time() + 60*60 );
}
else
{
print "Пара Логин-Пароль не верна!";
}
}

else
{
print "Логин и пароль не определены";
}

if ( $_COOKIE['dostup'] == true )
{
print "Это секретная строка, если dostup не равно true ее не видно";
}
?>

Спустя 9 часов, 2 минуты, 35 секунд (4.09.2006 - 07:54) vasa_c написал(а):
QUOTE
Давате для начала сделаем по-тупому. нет никакого сервака и пусть хранится не число, а просто в куках
лежит значение true (доступ) или false(запрет).

Вот тут то вы, товарищ, и облажались, прошу прощения, глубочайшим образом.

Мало-мальски грамотному человеку не стоит абсолютно никаких трудов заменить куку у себя в браузере на true и избавиться от ввода логина и пароля.

Спустя 6 часов, 12 минут, 52 секунды (4.09.2006 - 14:07) Rem написал(а):
Вопсчем насчёт авторизации я вроде въехал, только вот эту самую весчь я собираюсь организовать не через доступ (так любой взломает), а через связку логин пароль (эта связка будет именем куки) сверяем эти имя и пароль с логином/паролем в бд у искомого юзера и в зависимости от верности ввода данных разрешаем ему логиниться.
QUOTE
И как именно ты пробывал?

Я пробовал путём поиска переменной $rating, потом у этой переменной то, что находится в "", заменять на $rating++, тока у меня постоянно записывало вместе с этим значением Resourse #ID 27 (или 25, 20, 13 и т.д.) и он мне эту хрень выводил вместе с файлом...

Спустя 1 час, 17 минут, 20 секунд (4.09.2006 - 15:24) vasa_c написал(а):
QUOTE
Я пробовал путём поиска переменной $rating, потом у этой переменной то, что находится в "", заменять на $rating++, тока у меня постоянно записывало вместе с этим значением Resourse #ID 27 (или 25, 20, 13 и т.д.) и он мне эту хрень выводил вместе с файлом...

Так ты решил эту проблему?
Если нет, то:
1. Покажи, наконец, код.
2. В следующий раз для каждого вопроса создавай отдельную тему. Потому что разбираться в одной с авторизацией и работой с файлами не катит.

Спустя 1 час, 58 минут, 26 секунд (4.09.2006 - 17:23) Rem написал(а):
Нет, проблему я не решил. Он мне писал всегда этот Resourse #ID 27 вместо значения переменной.
Кто-нибудь может сказать, из-за чего он так записывает?

1. Тока вот у меня есть тупая привычка - если скрипт не работает или работает криво надо его полностью удалять, если скрипт маленький. Так что выложить я примеры не смогу...
2. Ладно, в следующий раз так и поступлю.

И вопрос: а насчёт авторизации через имя cookie я верно начал думать? и возможно ли взломать сайт через такой кукис?

Спустя 6 минут, 48 секунд (4.09.2006 - 17:30) vasa_c написал(а):
QUOTE
а насчёт авторизации через имя cookie я верно начал думать?

А кто тебя знает?
Додумай сначала до конца, а потом выложи здесь алгоритм, по пунктам и с подробным описанием. Тогда и будем его разбирать.
Непонятно что такое "не через доступ (так любой взломает)". Непонятно зачем "эта связка будет именем куки"

Спустя 1 час, 16 минут, 58 секунд (4.09.2006 - 18:47) Rem написал(а):
"не через доступ" значит не через переменную $dostup="true/false";
а связка будет использована примерно так:

<?php>
$nik = $_POST['log'];
$passwd = $_POST['pwd'];
//тут может стоять проверка на чтение данного файла с аккаунтом юзера
include("accs/$nik.php");
//nick и pass - данные юзера из БД
if ($nik==$nick && $passwd==$pass)
{
setcookie( "$nick",$pass, time() + 60*60 );
}
?>

а потом с каждым чтением куки будет идти запрос в бд с именем $nick и содержимым $pass, сопоставляться с пассвордом и ником из базы и если верно - логиниться.
Запись может быть не понятна, мысли в голове хаотические, вообщем надо написать нормально это дело.

Спустя 3 минуты, 28 секунд (4.09.2006 - 18:50) vasa_c написал(а):
QUOTE
//nick и pass - данные юзера из БД

Какого юзера? Ведь ты еще не знаешь, какой это юзер.

Читай лучше ссылку из первого ответа.

Спустя 3 года, 2 месяца, 6 дней, 21 час, 19 минут, 13 секунд (11.11.2009 - 17:09) Guest написал(а):
Скрытый текст
привет


_____________
tesseract (10:09:16 1/06/2007)
к вопросу о вчерашних скриптостраданиях. Только что кодер знакомый прислал, нашёл в коде программы, написанной уволенным коллегой незадолго до ухода:
#define TRUE FALSE //счастливой отладки <ВЦ>
такого извращённого юмора ещё не встречал
Rouse_ (10:09:56 1/06/2007)
#define true ((rand() % 2) ? true : false) //с первым апреля
Быстрый ответ:

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