Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
.NET ONLY
71 / 71 / 7
Регистрация: 05.10.2011
Сообщений: 495
1

Проблемы с сессией в PHP

25.12.2012, 21:03. Показов 1710. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Есть вот файл в котором происходит авторизация:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
 
    require_once ($_SERVER['DOCUMENT_ROOT'].'/engine/model/ini.php');
    require_once ($_SERVER['DOCUMENT_ROOT'].'/engine/model/db_connect.php');
    
    if(isset($_POST['login']))
    {
        
        $login = $_POST['login'];
        $password = md5($_POST['password']);
        
        if (($login == NULL) || ($password == NULL))
        {
            echo "Заполните все поля пожалуйста!";
        }
        else
        {
            $sql_string = "SELECT user_id FROM users WHERE login='".$login."' AND password = '".$password."' LIMIT 1;";
            $sql = mysql_query($sql_string) or die(mysql_error());
            
            if (mysql_num_rows($sql) == 1)
            {
                $row = mysql_fetch_assoc($sql);
                $_SESSION['user_logged'] = $row['user_id'];
                
                !!!!!!!!!!!!!!!!!!ТУТ МЫ УСПЕШНО НАШЛИ ПОЛЬЗОВАТЕЛЯ И АВТОРИЗИРОВАЛИСЬ!!!!!!!!!!!!!!!!!!!!!!
            }
            else
            {
                echo "Такого пользователя нет в нашей БД! Проверьте правильность ввода!";
            }
        }
    }
    else
    {
        $content = $template->fetch($_SERVER['DOCUMENT_ROOT']."/engine/admin-panel/template/login.tpl");
        $template->assign("content",$content);
    
        $template->display($_SERVER['DOCUMENT_ROOT']."/engine/admin-panel/template/main.tpl");
    }
 
?>
И так. На месте где в коде строка:
PHP
1
!!!!!!!!!!!!!!!!!!ТУТ МЫ УСПЕШНО НАШЛИ ПОЛЬЗОВАТЕЛЯ И АВТОРИЗИРОВАЛИСЬ!!!!!!!!!!!!!!!!!!!!!!
Нужно написать такое:
Чтобы мы переходили на ссылку:
а там есть проверка:
PHP
1
if (isset($_SESSION['user_logged'])){
и нужно чтобы эта проверка проходила, тоесть передать полученый $_SESSION['user_logged' дальше.

Как так сделать!?

Заранее благодарен.

Добавлено через 52 минуты
1) Как сделать переадресацию и чтобы при этом сессия сохранялась?
2) Как сделать просто переадресация на другую ссылку без всяких сессий и передачи параметров?

Добавлено через 8 минут
простая переадресация понял:
PHP
1
2
header("Location: /admin-panel/login/"); 
exit();
теперь как сделать:
Цитата Сообщение от DEA7H Посмотреть сообщение
Как сделать переадресацию и чтобы при этом сессия сохранялась?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2012, 21:03
Ответы с готовыми решениями:

Кодировка и сопутствующие проблемы с сессией
Здравствуйте Подключаю бд и сессию к странцие чрз отельный файл(redbeadn php) require...

Странности с сессией php
Всем привет. Не могу понять в чем &quot;прикол&quot; с этой сессией... К примеру простой код test.php:...

Авторизация с сессией , php+mysql , session_start
Привет всем! Вспоминаю PHP в связи с началом программирования под Android. Написал несколько...

Проблемы с PHP
Здравствуйте. есть такая вот байда с пхп говорю ему: &lt;html&gt; &lt;head&gt; &lt;title&gt;Table&lt;/title&gt; &lt;/head&gt;...

10
198 / 166 / 23
Регистрация: 20.04.2011
Сообщений: 750
Записей в блоге: 1
25.12.2012, 21:07 2
Сессия в любом случае сохраняется. Просто на каждой страничке где её надо использовать пишите
PHP
1
session_start();
1
.NET ONLY
71 / 71 / 7
Регистрация: 05.10.2011
Сообщений: 495
25.12.2012, 21:25  [ТС] 3
Тьфу ты, там где я читал о...
PHP
1
session_start();
...ничего не написано.

Теперь все работает! Спасибо!

Добавлено через 13 минут
А когда сессия закончится сама, время какое-то есть ее действия?
0
198 / 166 / 23
Регистрация: 20.04.2011
Сообщений: 750
Записей в блоге: 1
25.12.2012, 21:31 4
Зависит от выставленных параметров в пыхе
PHP
1
2
ini_set('session.gc_maxlifetime', $time);
ini_set('session.cookie_lifetime', $time);
$time - время в секундах
1
.NET ONLY
71 / 71 / 7
Регистрация: 05.10.2011
Сообщений: 495
25.12.2012, 21:34  [ТС] 5
Ясно! И последний вопрос! xD
1) Как принудительно завершить сессию?
2) Как завершить сессию для определенного пользователя? Ну если у меня например одновременно авторизированы 2 разных пользователя, то как сделать так что когда один жмет выход, выходит только он а тот первый остается?
0
198 / 166 / 23
Регистрация: 20.04.2011
Сообщений: 750
Записей в блоге: 1
25.12.2012, 21:37 6
PHP
1
session_destroy();
Сессии хранятся на стороне клиента. Поэтому кто нажмёт, тот и выйдет. Нет разницы сколько авторизировано.
1
.NET ONLY
71 / 71 / 7
Регистрация: 05.10.2011
Сообщений: 495
25.12.2012, 21:39  [ТС] 7
Спасибо! Теперь все понятно! Вы мне очень помогли!
0
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
26.12.2012, 02:22 8
Цитата Сообщение от c4boomb Посмотреть сообщение
Сессии хранятся на стороне клиента
Я думаю Вы не так выразились, а человек так и запомнит Или Вы действительно так думаете?
0
2 / 2 / 0
Регистрация: 27.12.2012
Сообщений: 94
27.12.2012, 14:10 9
Цитата Сообщение от DEA7H Посмотреть сообщение
Ясно! И последний вопрос! xD
1) Как принудительно завершить сессию?
2) Как завершить сессию для определенного пользователя? Ну если у меня например одновременно авторизированы 2 разных пользователя, то как сделать так что когда один жмет выход, выходит только он а тот первый остается?
Лучше всего уничтожить сессию так:

PHP
1
2
    unset($_SESSION['name']); 
    session_destroy();
Так правильней чем просто "дестрой".
0
198 / 166 / 23
Регистрация: 20.04.2011
Сообщений: 750
Записей в блоге: 1
28.12.2012, 00:25 10
fa2m, скорее неправильно выразился для упрощения понимания.
Вообще сессия хранится на сервере, а на стороне клиента только идентификатор. В этом и есть ёё преимущество перед куками...

SwoDs, Почему? После выполнения дестроя память точно так высвобождается как и с использованием unset.
0
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
28.12.2012, 01:15 11
Цитата Сообщение от c4boomb Посмотреть сообщение
fa2m, скорее неправильно выразился для упрощения понимания.
Вообще сессия хранится на сервере, а на стороне клиента только идентификатор. В этом и есть ёё преимущество перед куками...
Я практически был уверен, что Вы это знаете (что Вы и доказали) Но "новичкам" так как Вы сказали в предыдущем посте говорить нельзя, даже для упрощения понимания!
0
28.12.2012, 01:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2012, 01:15
Помогаю со студенческими работами здесь

Непонятки с сессией.
Всем привет. Проблема такова. Есть страничка регистрации к MSSQL базе. Работает все нормально, но...

Проблемка с сессией.
Перелистал весь Google, ничего путного про сессии, а когда нашел все таки более менее понятную...

с сессией завал!
1. с Клавиатуры вводятся: первый член геометрической прогрессии b1 и знаменатель q. Вычислить...

Работа с сессией
Создайте 2 страницы php. На одной странице укажите настройки (цвет фона, начертание и цвет текста)....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru