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
Форумы портала PHP.SU :: Версия для печати :: не могу разобраться с сессиями
Форумы портала PHP.SU » » Вопросы новичков » не могу разобраться с сессиями

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

1. arga - 09 Января, 2018 - 07:06:55 - перейти к сообщению
Помогите новичку! Копаюсь в CMS, хочу написать простой сайтик и заодно в php разобраться. Столкнулся с проблемой авторизации на сайте. Хочу сделать чтобы на страницах выдавалось сообщение "Вы вошли как: юзер", а если не залогинился то отображаются кнопки входа и регистрации.
Есть главная страница index.php, она инклудит info.inc.php, она в свою очередь выводит содержимое переменной $content. Эта переменная содержит форму входа на сайт написанная на HTML(форма вызывает методом Post файл testreg.inc.php где происходит проверка логина пароля).
Как мне правильно открыть сессию? Прочитал кучу литературы и не могу понять всё равно. Открываю сессию в файле index.phpв самом начале. Данные сессия отображает только в файле testreg.inc.php., т.е. на странице где выполняется вход пишет : "Вы вошли как: Вася". Перехожу на главную и вижу:
'Notice: Undefined index: login in /var/www/vhosts/u0430752.plsk.re gruhosting.ru/mysite.ru/template /head_auth.php on line 2
Вы вошли как:"
2. Artix - 09 Января, 2018 - 16:17:09 - перейти к сообщению
arga пишет:
Помогите новичку! Копаюсь в CMS, хочу написать простой сайтик и заодно в php разобраться. Столкнулся с проблемой авторизации на сайте. Хочу сделать чтобы на страницах выдавалось сообщение "Вы вошли как: юзер", а если не залогинился то отображаются кнопки входа и регистрации.
Есть главная страница index.php, она инклудит info.inc.php, она в свою очередь выводит содержимое переменной $content. Эта переменная содержит форму входа на сайт написанная на HTML(форма вызывает методом Post файл testreg.inc.php где происходит проверка логина пароля).
Как мне правильно открыть сессию? Прочитал кучу литературы и не могу понять всё равно. Открываю сессию в файле index.phpв самом начале. Данные сессия отображает только в файле testreg.inc.php., т.е. на странице где выполняется вход пишет : "Вы вошли как: Вася". Перехожу на главную и вижу:
'Notice: Undefined index: login in /var/www/vhosts/u0430752.plsk.re gruhosting.ru/mysite.ru/template /head_auth.php on line 2
Вы вошли как:"

http://programmer-weekdays[dot]ru/archives/301
http://programmer-weekdays[dot]ru/archives/395
http://programmer-weekdays[dot]ru/archives/125
3. Строитель - 09 Января, 2018 - 17:56:17 - перейти к сообщению
arga, набросал демо для примера:
index.php
Спойлер (Отобразить)

info.inc.php
Спойлер (Отобразить)

testreg.inc.php
Спойлер (Отобразить)

head_auth.php
Спойлер (Отобразить)
4. Artix - 09 Января, 2018 - 20:00:50 - перейти к сообщению
Строитель пишет:
$_SERVER['REQUEST_METHOD'] == 'POST'

В чем разница if($_SERVER[‘REQUEST_METHOD’] == ‘POST’) между if(isset($_POST['submit'])) ?
хотя мне кажется второй варик это бред проверять кнопку но спрошу
5. Строитель - 09 Января, 2018 - 20:15:56 - перейти к сообщению
Artix, разница в том, что $_SERVER['REQUEST_METHOD'] == 'POST' проверяет, каким методом передаются данные, а isset($_POST['submit']) проверяет, какая именно нажата кнопка.
6. Artix - 09 Января, 2018 - 20:33:31 - перейти к сообщению
Строитель пишет:
Artix, разница в том, что $_SERVER['REQUEST_METHOD'] == 'POST' проверяет, каким методом передаются данные, а isset($_POST['submit']) проверяет, какая именно нажата кнопка.

если я правильно тебя понял преждем чем использовать isset($_POST['submit']) я должен использовать $_SERVER['REQUEST_METHOD'] == 'POST' ??
7. Строитель - 09 Января, 2018 - 20:48:43 - перейти к сообщению
Artix пишет:
прежде чем использовать isset($_POST['submit']) я должен использовать $_SERVER['REQUEST_METHOD'] == 'POST' ?
Нет.

Строго говоря, выбор определённых инструментов зависит от конкретных задач. Например, если нужно проверить именно метод передачи, то разумнее использовать $_SERVER['REQUEST_METHOD']. Если методом POST передаются несколько значений, а вам надо получить значение конкретной формы, то правильнее проверять конкретную форму (или кнопку).

Ну и ещё надо помнить, что одну и ту же задачу можно решать двумя и более способами.
8. arga - 10 Января, 2018 - 04:29:40 - перейти к сообщению
Спасибо всем кто откликнулся )))) Переделал как говорит Строитель, но всё равно получаю
Undefined index: user in /var/www/vhosts/u0430752.plsk.re gruhosting.ru/urvoenpravo.ru/ind ex.php on line 59

Вот ещё вопрос, это может быть связано с тем, что testreg.inc.php, head_auth.php, info.inc.php находятся в папке template, а индекс в корне? Сколько читал, когда запускается сессия не важно в каких папках что где лежит. Когда захожу в head_auth.php, пишет "привет, юзер", тут же перехожу на index.php и получаю выше указанную ошибку
(Добавление)
Локально всё заработало. На сайте проблема осталась. Покопался ещё, выяснил что когда перехожу на сайт по www[dot]mysite[dot]ru то "Привет, гость" а если без www просто mysite.ru всё отлично. Через конфиг обращение к сайту происходит как 'http://www.mysite.ru/'

 

Powered by ExBB FM 1.0 RC1