Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Куки и сессии

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не пойму, что за лажа...

Код:
 
$value = "test";
setcookie("TestCookie", $value);
echo $_COOKIE["TestCookie"];
 

 
Не выводит куки

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 22:26 20-07-2013 | Исправлено: koreets2011, 22:27 20-07-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
Не выводит куки

и не должен выводить. они недоступны в той же рабочей сессии.  
потому что глобальный массив $_COOKIE инициализируется теми данными, что получены из браузера, а браузер пока не получил ваши куки и не отправил их обратно на сервер со следующим запросом.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:42 20-07-2013
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я уже все перечитал, не пойму как правильно сделать личный кабинет. Не хочу использовать сторонние решения.  
 
Застрял на сохранении сессии и куках.  
 
Cheery может намекнешь
 
 
 

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 22:55 20-07-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
Cheery может намекнешь  

на что, если я не знаю в чем ваша проблема?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:01 20-07-2013
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема в том, что приходится постоянно вводить логин с паролем при заходе в личный кабинет. Не соображу как использовать куки и сессии.

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 23:03 20-07-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
Не соображу как использовать куки и сессии.

если вы используете сессии, то куки вам не нужны. в них будет автоматически сохраняться идентификатор сессии и по нему, опять же автоматически, будут загружаться данные.
 
ps: http://www.phpfaq.ru/sessions


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:08 20-07-2013 | Исправлено: Cheery, 23:13 20-07-2013
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Как мне реализовать, что бы не логиниться повторно?
Как при заходе на сайт отличить пользователя от гостя?
Я так понимаю, нужны куки.
Я их устанавливаю

Код:
 
setcookie("TestCookie", "TEST", time()+3600);
 

Затем при новом заходе

Код:
 
echo $_COOKIE["TestCookie"];
echo $HTTP_COOKIE_VARS["TestCookie"];
 

И пустота, что не так?

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 23:21 20-07-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011
да что вы к кукам привязались то? почитайте как работать с php сессиями.. они с куками сами все за вас сделают.
 

Цитата:
Я их устанавливаю  

это должно быть сделано ДО какого либо вывода в браузер.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:23 20-07-2013
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ммм... Сейчас перечитаем.
 
Добавлено:
Cheery ну как то так

Код:
 
function users() {
    global $users;
    if ($_SESSION['log']!="" AND $_SESSION['pass']!="") {
        $con=mysqli_connect($dbhost,$dbuname,$dbpass,$dbname);
        mysqli_query($con, "set CHARACTER SET UTF8");
        $result = mysqli_query($con,"SELECT * FROM `users`");
        while($row = mysqli_fetch_array($result)) {
        $user_login = $row['userlogin'];
        $user_password = $row['password'];
        $activate = $row['activation'];
        }
        if ($_SESSION['log']==$user_login AND $_SESSION['pass']==$user_password AND $activate=="1") {
            return $users = "user";
        }
    } else {
         return $users = "guest";
    }
}
 

 
Ну а потом уже различаю, кто зашел на сайт.

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 23:25 20-07-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011
зачем делать каждый раз проверку логина и пароля?
что мешает, если проверка пройдена, сделать $_SESSION['logged'] = 1;
и все.. ну сохраните в сессии еще какие данные нужны.
если есть данные - залогинен, а если нет - значит гость.
 
с сессиями есть один минус на shared хостинге, но там, обычно, место куда сохраняются данные сессий свое у каждого сайта.
 

Цитата:
  $result = mysqli_query($con,"SELECT * FROM `users`");  
        while($row = mysqli_fetch_array($result)) {  
        $user_login = $row['userlogin'];  
        $user_password = $row['password'];  
        $activate = $row['activation'];  
        }  

зачем выбирать всех сразу? почему не сделать запрос по имени пользователя?
для малого количества это пойдет, но если будут тысячи пользователей?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:07 21-07-2013 | Исправлено: Cheery, 01:08 21-07-2013
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
имеешь в виду так

Код:
 
function users() {
    global $users;
    if ($_SESSION['logged']==1) {
        return $users = "user";
    } else {
        return $users = "guest";
    }
}
 

 

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 02:02 21-07-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
имеешь в виду так  

да хотя бы.. только зачем тут глобальная переменная $users, да и странный вид возврата из функции.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:26 21-07-2013
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery а что странного?

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 02:36 21-07-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
а что странного?  

то, что не имеет смысла. вы хотите глобальную переменную инициализировать? зачем, если есть уже функция. да и вообще ее тогда можно написать как

Код:
function users() {  
    return $_SESSION['logged'] ? "user" : "guest";  
}  


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:39 21-07-2013 | Исправлено: Cheery, 02:39 21-07-2013
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery Понял, спасибо.
Чтобы тем не плодить спрошу тут.
Cheery так как у меня 90% контента обновляется с помощью AJAX, то возникла проблема как обновить контент который у меня подключается через include?
 
Например: в левой части весит форма для входа, подключается через include, вводишь логин пароль  

Код:
 
<?php
if (users()=="guest") {
    echo "Тут форма входа";
} else {
     echo "Тут приветствие";
}
?>
 

и попадаешь в личный кабинет без передергивания всей страницы, все хорошо работает.  
Проблема в том, что конечно естественно, подключенный файл через include не обновляется.
Как его можно обновить, не дергая весь сайт, то есть AJAX'ом?
 
P.S. Думаю поместить его содержимое в DIV с каким нибудь ID и уже AJAX'ом его обновить по клику га вход и выход. Что думаешь?

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 14:39 21-07-2013 | Исправлено: koreets2011, 14:41 21-07-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
Как его можно обновить, не дергая весь сайт, то есть AJAX'ом?  

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

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:41 21-07-2013
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery с этим разобрался, спасибо.  
Теперь опять ступр, не пойму как получить новое значение переменной сессии.
1) Логинюсь AJAX'ом

Код:
 
<script type="text/javascript">
$(function(){
    var field_values = {
            'userlogin'  : 'Логин',
            'password'  : 'Пароль',
    };
    $('input#userlogin').inputfocus({ value: field_values['userlogin'] });
    $('input#password').inputfocus({ value: field_values['password'] });
 
    $('#submit_login').click(function(){
        $.ajax({
            type: "POST",
            url: "login.php",
            data: {
                userlogin: $('#userlogin').val(),
                password: $('#password').val(),
            },
            cache: false,
            success: function(data){
 
            }
        });
    });
});
</script>
 

2) Получаю сессию

Код:
 
<script type="text/javascript">
var logged_user = "<? echo $_SESSION['logged']; ?>"
</script>
 

3) Обновляю контент

Код:
 
<script type="text/javascript">
$(document).ready(function() {
    if (logged_user == 1) {
        $('#logged').fadeIn(700);
        $('#notlogged').fadeOut(700);
    } else {
        $('#notlogged').fadeIn(700);
        $('#logged').fadeOut(700);
    }
});
</script>
 

Но переменная сессии пуста, пока не обновишь страницу вручную.  
Что можно придумать?
 

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 02:42 22-07-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
2) Получаю сессию  
 
Код:
 
<script type="text/javascript">  
var logged_user = "<? echo $_SESSION['logged']; ?>"  
</script>  
 

это что и зачем?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:17 22-07-2013
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery это я получаю сессию и записываю её в переменную logged_user. А как еще JS получить переменную сессии?
 
Добавлено:
Cheery отказался я от бредовых идей типа  

Код:
 
<script type="text/javascript">  
var logged_user = "<? echo $_SESSION['logged']; ?>"  
</script>  
 

 
Кажется разобрался как можно заставить AJAX общаться с PHP.

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 12:34 22-07-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
отказался я от бредовых идей типа

потому что я не понимаю, зачем вам эта переменная нужна в javascript
и вообще - используйте JSON при передаче информации.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:00 22-07-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Куки и сессии


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru