Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Авторизация с помощью сессий

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: не передаются переменные от страницы к странице
dmaw
Отправлено: 22 Декабря, 2009 - 17:31:29
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


Помог: 0 раз(а)




Мой код:
CODE (text):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. session_start();
  4.  
  5. //получаю данные из формы и заношу их в переменные
  6. if (!empty($_POST['submit']))
  7. {
  8. $_SERVER['PHP_AUTH_USER'] = $_POST['admin'];
  9. $_SERVER['PHP_AUTH_PW'] = $_POST['pass'];
  10. }
  11.  
  12. //визуально проверяю
  13. echo "<table border=2>";
  14. echo $_SERVER['PHP_AUTH_USER'];
  15. echo "/";
  16. echo $_SERVER['PHP_AUTH_PW'];
  17. echo "</table>";
  18.  
  19. //если спеременной нет, вывожу форму
  20. if (!isset($_SERVER['PHP_AUTH_USER']))
  21. {
  22. include("auth_form.php");
  23. exit();
  24. }
  25.  
  26. ?>

При переходе на другую страницу с таким же кодом переменные не сохраняются и снова выводится форма для их ввода Недовольство, огорчение Чё делать?
(Добавление)
Если использовать:
CODE (text):
скопировать код в буфер обмена
  1. header("WWW-Authenticate: Basic realm=\"Форма авторизации\"");

то всё работает, но я хочу вставить свою форму, а она не хочет запоминать значения переменных.

(Отредактировано автором: 22 Декабря, 2009 - 17:32:39)

 
 Top
Мелкий Супермодератор
Отправлено: 22 Декабря, 2009 - 17:42:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Может имеет смысл писать не в $_SERVER, а в сессии? У сессий суперглобальный массив $_SESSION


-----
PostgreSQL DBA
 
 Top
dmaw
Отправлено: 22 Декабря, 2009 - 17:46:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


Помог: 0 раз(а)




Да, если вместо $_SERVER['PHP_AUTH_USER'] писать $_SESSION['admin'] тогда все нормально Улыбка но почему $_SERVER не хочет этого делать?
 
 Top
Вездеход
Отправлено: 22 Декабря, 2009 - 17:51:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




dmaw
потому что он при перезагрузке страницы обновляется на скока я знаю...
и он абсолютно не предназначен для этого))


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
dmaw
Отправлено: 22 Декабря, 2009 - 17:57:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


Помог: 0 раз(а)




Вездеход, так а пишут, что эти переменные браузер запоминает пока не будет перезапущен, или врут?
 
 Top
Мелкий Супермодератор
Отправлено: 22 Декабря, 2009 - 18:03:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Браузер об этих переменных вообще понятий не имеет.

(Отредактировано автором: 22 Декабря, 2009 - 18:04:10)



-----
PostgreSQL DBA
 
 Top
dmaw
Отправлено: 22 Декабря, 2009 - 18:09:22
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


Помог: 0 раз(а)




Мелкий, Радость сервер
 
 Top
Вездеход
Отправлено: 22 Декабря, 2009 - 18:42:20
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




dmaw
пишет про $_SESSION
и всегда все через них делается.
а $_SERVER используется для других целей...
напишите такой скрипт:
print_r($_SERVER);

и посмотрите что он вам выдаст.


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
dmaw
Отправлено: 22 Декабря, 2009 - 18:58:06
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


Помог: 0 раз(а)




Вездеход пишет:
print_r($_SERVER);

знаю, спасибо ребята, сделал через $_SESSION
 
 Top
dembi
Отправлено: 23 Декабря, 2009 - 16:23:11
Post Id


Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




Привет Всем!

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

После того, как авторизация прошла успешно я попадаю на главную страницу.
На всех остальных моих страницах есть ссылка на ''Logout'.
При клике на нее ты попадаешь на главную страницу для авторизации.
Страница с авторизацией наз. Http://test[dot]site/index.php

Но есть одна проблема. После того как я сделал ''Logout', если ввести к примеру следующий url: http://test[dot]site/main.php или http://test[dot]site/report.php я попадаю на эту страницу или любую другую страницу.

Что Вы посоветуете, для того чтобы не пускать юзера ни куда, до тех пор пока он не пройдет авторизацию.

Заранее спасибо за Ваши советы.

(Отредактировано автором: 23 Декабря, 2009 - 16:25:19)

 
 Top
EuGen Администратор
Отправлено: 23 Декабря, 2009 - 16:27:59
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
dembi
Отправлено: 23 Декабря, 2009 - 16:33:25
Post Id


Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




Не помогает.
Во мой скрипт logout.php

CODE (text):
скопировать код в буфер обмена
  1. <?php
  2.    session_start();
  3.    session_destroy();
  4.    include("index.php");
  5. ?>


Index.php — это обычная форма для ввода логина и пароля, которая методом POST передает логин и пасс в скрипт аторизации (login.php).

Вот сам скрипт авторизации:


CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. session_start();
  3. include('db.php');
  4.  
  5. $user = $_POST['user'];
  6. $pass = $_POST['pass'];
  7.  
  8. get_magic($user);
  9. get_magic($pass);
  10.  
  11. $request_login = mysql_query("SELECT id, login, name, password FROM someDB.table  WHERE login='$user' and password='$pass'");
  12.  
  13. $rezult_query = mysql_fetch_array($request_login);
  14.  
  15. $visb_ac = "visibility:hidden; display:none;";
  16.  
  17. if ( !empty($rezult_query['login']) && !empty($rezult_query['password'])) {
  18.                 $_SESSION['user'] = $rezult_query['id'];
  19.                 $_SESSION['name'] = $rezult_query['name'];
  20.                 header("Location: main.php");
  21.         } else {
  22.         $visb_ac = "visibility:visible;";
  23.         $error = "Параметры аутентификации неверны";
  24. }
  25.  
  26. ?>

(Добавление)
Все я решил данную проблему.

Я создал дополнительный скрипт для проверки есть ли Сессия или нет.
и подгружаю его для каждой страницы.

Вот сам скрипт:

CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. $a = $_SESSION;
  3. if (count($a) == 0) {
  4.         header("Location: logout.php");
  5. }
  6. ?>


Всем спасибо за помощь.
 
 Top
Монстр_11111
Отправлено: 23 Декабря, 2009 - 19:29:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 248
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




dembi уберите эту строку, и все заработает
dembi пишет:
session_destroy();
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB