возникла такая проблемма нужно сделать регистрацию в текстовый файл и последущее залогинивание из того же файла, сделал регистрацию пользователь добаляется без проблемм и даже с небольшим шифрованием. а вот с авторизацией проблемма пишет что пользователь авторизирован но после перехода на другую любую стр снова просит залогиниться. подскажите где что проглядел код прилагается
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
а зачем каждый раз искать сессию?
искать всёравно прийдётся. будет то на сервере или на стороне клиента при авторизации это ещё вопрсо что кому лучше, а вот по теме этим ничего не сказано...
а зачем каждый раз искать сессию?
искать всёравно прийдётся. будет то на сервере или на стороне клиента при авторизации это ещё вопрсо что кому лучше, а вот по теме этим ничего не сказано...
Спустя 3 минуты, 48 секунд (9.06.2011 - 11:13) Игорь_Vasinsky написал(а):
её не надо искать, она на стороне сервера создаётся
Спустя 1 минута, 1 секунда (9.06.2011 - 11:14) tatti написал(а):
Игорь_Vasinsky
а. ну тогда всё понятно. занчит и искать ничего не надо ) писать тоже инчего не будем?
а. ну тогда всё понятно. занчит и искать ничего не надо ) писать тоже инчего не будем?
Спустя 16 минут, 38 секунд (9.06.2011 - 11:31) Игорь_Vasinsky написал(а):
не... небудем, зачем... мне не лень на каждой странице авторизироваться
Спустя 18 минут, 55 секунд (9.06.2011 - 11:50) minok94 написал(а):
Правильно сказал Игорь_Vasinsky))) На таком сайте повеситься можно))) Сессия лучше всего.
Спустя 21 минута, 7 секунд (9.06.2011 - 12:11) tatti написал(а):
Игорь_Vasinsky
похвально
NoCash
чему у тебя равны значения session.use_cookies и session.use_trans_sid?
если собираешься использовать сессии то выстави так
session.use_cookies = 0
session.use_trans_sid = 1
однако
похвально
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
прав тот у кого больше прав
minok94
прав тот у кого больше прав
Спустя 1 минута, 3 секунды (9.06.2011 - 12:12) Игорь_Vasinsky написал(а):
Да потому-что так и делается.
После регистрации создаётся сессия и всё на ней держиться.
В форме аворизации добавляется checkbox "запомнить меня" - есл он отмечен, то после авторизации создаютс куки (но для для того чтобы каждый раз не авторизироваться) и так же сессия.
А куки нужны для того, чтоб при следующем входе узнат юзера и пустить его как авторизируевшегося.
ЯМож хоть скока угарать и спорить - но это и есть правильный механизм
После регистрации создаётся сессия и всё на ней держиться.
В форме аворизации добавляется 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
обьяснять долго. почитай внимательно и всё сам поймёшь
обьяснять долго. почитай внимательно и всё сам поймёшь
Спустя 14 минут, 3 секунды (9.06.2011 - 12:41) Игорь_Vasinsky написал(а):
tatti
да я постоянно на этом вопросе, чё читать? опыт и практика. заводишь ТС в какие то дебри. Всё. Удач.
да я постоянно на этом вопросе, чё читать? опыт и практика. заводишь ТС в какие то дебри. Всё. Удач.
Спустя 2 часа, 22 минуты, 36 секунд (9.06.2011 - 15:04) tatti написал(а):
Игорь_Vasinsky
Вопервых если для тебя пхп документация это дебри тогда мне искренне жаль твоих клиентов.
Вовторых ТС именно ты и тебе подобные заводят в дебри ) видишь человеку уже помогают так чего лезть со своими пятью копейками и путать его ещё больше? можешь предложить вариант получше? так аргументируй! а высказывания типа
Вопервых если для тебя пхп документация это дебри тогда мне искренне жаль твоих клиентов.
Вовторых ТС именно ты и тебе подобные заводят в дебри ) видишь человеку уже помогают так чего лезть со своими пятью копейками и путать его ещё больше? можешь предложить вариант получше? так аргументируй! а высказывания типа
Цитата |
Да потому-что так и делается. |
Цитата |
ни чё не надо выставлять. Сессии - это сессии, кки это куки. |
Цитата |
да я... |
вызывают на моём лице искреннюю улыбку. Можно подумать документацию писали с тебя. Мало у тебя опыта, мало...