Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
20 / 5 / 0
Регистрация: 11.07.2011
Сообщений: 51
1

Проверка сессии при входе на сайт

20.10.2012, 00:01. Просмотров 1825. Ответов 2
Метки нет (Все метки)

Здравствуйте. PHP я начал изучать сравнительно недавно и изучаю я его так сказать "по живому". Дайте пожалуйста простенький пример скрипта, который при новом открытии сайта проверял бы был раньше вход или нет. Если да то отправлял на индекс если нет то на логин...
Заранее спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2012, 00:01
Ответы с готовыми решениями:

Не очищает сессии при входе
Не очищает сессии при входе на сайт, если уже были заданы Login и Password index.html ...

Проверка возраста при входе на сайт WP
Доброго времени суток! Подскажите решение для сайта на WordPress: Нужно чтобы при входе на...

Время жизни сессии при входе в phpMyAdmin через FireFox.
Всем доброго времени суток. Стоит Denver. Повысил версию phpMyAdmin до 3.3.7(вроде была 2.6.2,...

Ошибка при входе на сайт
Здравствуйте все! Когда отрываешь сайт выскакивает ошибки те что на скрин шоте, кто знает как...

2
Каратель
Эксперт С++
6586 / 4007 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.10.2012, 00:49 2
Лучший ответ Сообщение было отмечено Als von Dante как решение

Решение

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
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Index</title>
</head>
<body>
<?php
    require('session.php');
    $session = ServerSession::getInstance();
    $session->sessionStart();
    
    if (is_null($session->getSessionArgument('username'))) {
        echo('<form action="post.php" method="post" enctype="application/x-www-form-urlencoded" accept-charset="UTF-8">
                  Логин: <input type="text" name="username"><br>
                  Пароль: <input type="password" name="password">
                  <input type="submit" name="okbutton" value="Login">
                  </form>');
    }
    else
    {
        echo('Привет, '.$session->getSessionArgument('username'));
        echo('<br><a href="close.php">Закрыть сессию</a>');
    }
?>
</body>
</html>
session.php
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
 
    interface ISession {
        const DEFAULT_USE_COOKIES = 1;
        const DEFAULT_USE_ONLY_COOKIES = 0;
        
        public function sessionStart();
        public function sessionDestroy();
        public function setSessionArgument($name, $value);
        public function getSessionArgument($name);
    }
 
    abstract class Session implements ISession {
        protected static $instance;
    }
    
    class ClientSession extends Session {
        const COOKIE_TIME = 500;
        const SESSION_PREFIX = 'clnt_sess';
        
        private static $isCreated = false;
        
        private function __construct() {}  
        
        public static function getInstance() {  
            if ( is_null(self::$instance) ) {
                self::$instance = new ClientSession();
            }
            return self::$instance;
        }
        
        public function sessionStart() {
            ini_set('session.use_cookies', 1);
            ini_set('session.user_only_cookies', 1);
        }
        
        public function sessionDestroy() {
            foreach ($_COOKIE as $key => $data) 
                if (strstr($key, self::SESSION_PREFIX))
                    setcookie($key, '', -3600, '/');                            
            ini_set('session.use_cookies', self::DEFAULT_USE_COOKIES);
            ini_set('session.use_only_cookies', self::DEFAULT_USE_ONLY_COOKIES);
        }
        
        public function setSessionArgument($name, $value) {
            $_COOKIE[self::SESSION_PREFIX.$name] = $value;
            $new_time = time() + self::COOKIE_TIME;
            foreach ($_COOKIE as $key => $data) 
                if (strstr($key, self::SESSION_PREFIX))
                    setcookie($key, $data, $new_time, '/');                            
            
            setcookie(self::SESSION_PREFIX.$name, $value, $new_time, '/');
        }
        
        public function getSessionArgument($name) {
            $param = self::SESSION_PREFIX.$name;
            return (isset($_COOKIE[$param]) ? $_COOKIE[$param] : null);
        }
    }
 
    class ServerSession extends Session {
        const COOKIE_TIME = 500;
        
        
        private static $isCreated = false;
        
        private function __construct() {}  
        
        public static function getInstance() {  
            if ( is_null(self::$instance) ) {
                self::$instance = new ServerSession();
            }
            return self::$instance;
        }
        
        public function sessionStart() {
            ini_set('session.use_cookies', 1);
            ini_set('session.user_only_cookies', 1);
            session_start();
        }
        
        public function sessionDestroy() {
            $_SESSION = array();
            session_destroy();
            ini_set('session.use_cookies', self::DEFAULT_USE_COOKIES);
            ini_set('session.use_only_cookies', self::DEFAULT_USE_ONLY_COOKIES);
        }
        
        public function setSessionArgument($name, $value) {
            $_SESSION[$name] = $value;
        }
        
        public function getSessionArgument($name) {
            return (isset($_SESSION[$name]) ? $_SESSION[$name] : null);
        }
    }   
?>
1
1177 / 1127 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
20.10.2012, 01:00 3
если создать сессию после вывода в браузер, то она не будет работать.
Строка session_start() должна быть выше любого вывода в браузер. Так как она устанавливает куки, а куки уходят с заголовками.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2012, 01:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка при входе на сайт
Собственно вот ошибка &lt;?php $form = &quot; &lt;form method='post' class='signin' action=''&gt; ...

Ошибка при входе на сайт
Здравствуйте. Подскажите пожалуйста что сделать чтоб ушли ошибки при входе на сайт...

Блокировка при входе на сайт!
Такая схема: Есть сайт, при входе на который вводятся логин и пароль. Если человек верно ввел...

Ошибка при входе на сайт
Помогите, выдает ошибку Parse error: syntax error, unexpected '&lt;?php $db = new...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.