[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проблемма с авторизацией
NoCash
Доброго времени суток,
возникла такая проблемма нужно сделать регистрацию в текстовый файл и последущее залогинивание из того же файла, сделал регистрацию пользователь добаляется без проблемм и даже с небольшим шифрованием. а вот с авторизацией проблемма пишет что пользователь авторизирован но после перехода на другую любую стр снова просит залогиниться. подскажите где что проглядел код прилагается

auth.php
header("Content-type: text/html; charset=cp-1251 ");
if(!isset($_POST['login'])) echo '<form action=index.php method=post>
Логин<input type="text" name="login">Пароль
<input type="text" name="pass">
<input type="submit" value="Авторизироваться">
<a href=registration.php>Зарегистрироваться</a>
</form>'
; else {
//Проверим есть ли пользователь в базе
$fp = file("user_db.db"); //считываем базу пользователей в массив
//ищем пользователя с паролем в базе

foreach($fp as $key=>$value) {
$user=explode("%1-1%",$value); //преобразуем строку пользователя в массив
if($_POST['login']==$user[0] and md5($_POST['pass'])==$user[1]) {
setcookie("cookie[login]", $_POST['login'], time()+3600);
setcookie("cookie[pass]", md5($_POST['pass']), time()+3600);
echo "Вы авторизированы и можете вернуться на индексную страницу";
}}}


registration.php
<?php
header("Content-type: text/html; charset=CP1251 \\r\\n");
include_once("head.php");
if(!isset($_POST['login']) and !isset($_POST['pass']) and !isset($_POST['name'])) {//проверяем обязательные параметры
echo '<form action="registration.php" method="post">
<input type="text" name="login"><br>
<input type="text" name="pass"><br>
<input type="text" name="name"><br>
<textarea name="info"></textarea>
<input type="submit" value="Зарегистрироваться">
</form>';
}
else {//регистрируем пользователя
//проверяем есть ли такой пользователь уже в базе
//ищем пользователя с паролем в базе
$fp1=file("user_db.db");
foreach($fp1 as $key=>$value) {
$user=explode("%1-1%",$value); //преобразуем строку пользователя в массив
if($_POST['login']==$user['0'] and md5($_POST['pass'])==$user['1']) {
$us = 1; echo "Такой пользователь уже есть";}
}
if($us!=1) { //если пользователя нет то добавляем
$fp = fopen("user_db.db", "a+"); // Открываем файл в режиме записи
$mytext = preg_replace("!\\r\\n!","<br>", $_POST['login']."%1-1%".md5($_POST['pass'])."%1-1%".$_POST['name']."%1-1%user%1-1%".$_POST['info'])."\\r\\n"; // Исходная строка
$test = fwrite($fp, $mytext); // Запись в файл
if ($test) echo 'Пользователь добавлен.';
else echo 'Ошибка при записи в файл.';
fclose($fp); //Закрытие файла
}
}
?>
[/php]


index.php

<?php
if(isset($_COOKIE['login'])) { //проверяем был ли уже ранее авторизирован наш пользователь
//и если да, то выполним нужный нам код

$fp = file("user_db.db"); //считываем базу пользователей в массив
//ищем пользователя с паролем в базе

foreach($fp as $key=>$value) {
$user=explode("%1-1%",$value); //преобразуем строку в массив
if($_COOKIE['login']==$user[0] and $_COOKIE['pass']==$user[1]) {
$us="вы авторизированы как '".$_COOKIE['login']."' имя:'".$user[2]."' права:'".$user[3]."' инфо:'". $user[4];

}
}
}

else {
include_once("auth.php");
}
if($us!=null){
echo $us;
}//else{include_once("auth.php");}
include_once("head.php")
?>







Спустя 1 час, 58 минут, 5 секунд (9.06.2011 - 10:38) tatti написал(а):
всё работает, как и написано.
if(!isset($_POST['login']))
{
// показать форму логина
} else {
// показать форму авторизованого юзера
}
форма логина показывается каждый раз когда не приходит пост ) а ты по куки ориентируйся что показывать ;)

Спустя 5 минут, 36 секунд (9.06.2011 - 10:44) NoCash написал(а):
при изменении на if(!isset($_POST['login'])) на if(!isset($_COOKIE['login'])) перестает залогиниваться вообще

Спустя 30 секунд (9.06.2011 - 10:44) Админ написал(а):
а ещё лучше сессия

Спустя 5 минут, 58 секунд (9.06.2011 - 10:50) tatti написал(а):
Цитата (NoCash @ 9.06.2011 - 07:44)
при изменении на if(!isset($_POST['login'])) на if(!isset($_COOKIE['login'])) перестает залогиниваться вообще

значит логика хромает )

Спустя 17 минут, 55 секунд (9.06.2011 - 11:08) Игорь_Vasinsky написал(а):
зачем кждый раз искать куки у юзера на компе???, достаточно первый раз проверить, создать сессию и весь сёрфинг держать на ней.

Спустя 1 минута, 13 секунд (9.06.2011 - 11:09) tatti написал(а):
Игорь_Vasinsky
а зачем каждый раз искать сессию? laugh.gif

искать всёравно прийдётся. будет то на сервере или на стороне клиента при авторизации это ещё вопрсо что кому лучше, а вот по теме этим ничего не сказано...

Спустя 3 минуты, 48 секунд (9.06.2011 - 11:13) Игорь_Vasinsky написал(а):
её не надо искать, она на стороне сервера создаётся biggrin.gif

Спустя 1 минута, 1 секунда (9.06.2011 - 11:14) tatti написал(а):
Игорь_Vasinsky
а. ну тогда всё понятно. занчит и искать ничего не надо ) писать тоже инчего не будем? laugh.gif

Спустя 16 минут, 38 секунд (9.06.2011 - 11:31) Игорь_Vasinsky написал(а):
не... небудем, зачем... мне не лень на каждой странице авторизироваться biggrin.gif biggrin.gif biggrin.gif

Спустя 18 минут, 55 секунд (9.06.2011 - 11:50) minok94 написал(а):
Правильно сказал Игорь_Vasinsky))) На таком сайте повеситься можно))) Сессия лучше всего.

Спустя 21 минута, 7 секунд (9.06.2011 - 12:11) tatti написал(а):
Игорь_Vasinsky
похвально rolleyes.gif

NoCash
чему у тебя равны значения session.use_cookies и session.use_trans_sid?
если собираешься использовать сессии то выстави так
session.use_cookies = 0
session.use_trans_sid = 1
однако
Цитата
PHP will add a unique PHPSESSID query pair to URIs within your site if cookies are not available and session.use_trans_sid is set. While this helps people who do not accept cookies, search engines will rank your site low.
взято с http://www.mtdev.com/2002/06/why-you-shoul...n-use_trans_sid

minok94
прав тот у кого больше прав

Спустя 1 минута, 3 секунды (9.06.2011 - 12:12) Игорь_Vasinsky написал(а):
Да потому-что так и делается.

После регистрации создаётся сессия и всё на ней держиться.
В форме аворизации добавляется checkbox "запомнить меня" - есл он отмечен, то после авторизации создаютс куки (но для для того чтобы каждый раз не авторизироваться) и так же сессия.
А куки нужны для того, чтоб при следующем входе узнат юзера и пустить его как авторизируевшегося.

ЯМож хоть скока угарать и спорить - но это и есть правильный механизм

Спустя 52 секунды (9.06.2011 - 12:13) Игорь_Vasinsky написал(а):
ни чё не надо выставлять.
Сессии - это сессии, кки это куки.

Спустя 9 минут, 44 секунды (9.06.2011 - 12:23) tatti написал(а):
Игорь_Vasinsky
кому надо, знает

Спустя 1 минута, 4 секунды (9.06.2011 - 12:24) Игорь_Vasinsky написал(а):
бред. давай ещё php.ini и настройка апача проверять.

Спустя 3 минуты, 29 секунд (9.06.2011 - 12:27) tatti написал(а):
Игорь_Vasinsky
обьяснять долго. почитай внимательно и всё сам поймёшь wink.gif

Спустя 14 минут, 3 секунды (9.06.2011 - 12:41) Игорь_Vasinsky написал(а):
tatti
да я постоянно на этом вопросе, чё читать? опыт и практика. заводишь ТС в какие то дебри. Всё. Удач.

Спустя 2 часа, 22 минуты, 36 секунд (9.06.2011 - 15:04) tatti написал(а):
Игорь_Vasinsky
Вопервых если для тебя пхп документация это дебри тогда мне искренне жаль твоих клиентов.
Вовторых ТС именно ты и тебе подобные заводят в дебри ) видишь человеку уже помогают так чего лезть со своими пятью копейками и путать его ещё больше? можешь предложить вариант получше? так аргументируй! а высказывания типа
Цитата
Да потому-что так и делается.

Цитата
ни чё не надо выставлять.
Сессии - это сессии, кки это куки.

Цитата
да я...

вызывают на моём лице искреннюю улыбку. Можно подумать документацию писали с тебя. Мало у тебя опыта, мало...
Быстрый ответ:

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