Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
gsx
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
#1

После входа заново возвращает на форму авторизации

16.11.2014, 17:29. Просмотров 1480. Ответов 20
Метки нет (Все метки)

есть вот такая штука(смотри ниже). Короч цель проста- авторизовался и получаешь доступ к контенту, ну и данные пользователя пишу в сессию. Но не могу понять почему при нажатии на любую ссылку меня возвращает на форму авторизации??? вроде ж записал пользователя в сессию, вообщем подскажите если не сложно в чем бок. Пишу я недавно, так что это только первые шаги, так сказать.
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
<?php
header('Content-Type: text/html; charset=cp1251');
session_start();
include_once "connect.php";
echo "<div align='center' style='font-size: large'>Мой сайт</div><body bgcolor=#ffebcd>";
if(isset($_POST['login']) && isset($_POST['password'])) {
$login = trim($_POST['login']);
$password = md5(trim($_POST['password']));
$sql = "select login,password from users where login='$login' and password='$password'";
mysql_query($sql) or die(mysql_error());
if (mysql_affected_rows() == 1) {
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
echo "<center>Добро пожаловать $login</center>";
include_once "r.html";
if (isset($_REQUEST['backbond'])) include_once "..\mygb\guestbook2.php";
if (isset($_REQUEST['contacts'])) echo <<<star
Наш адрес: проспект К. Маркса 112 <br>
тел. 678-34-23
star;
}
else {
echo "<center>Пользователь не существует</center>";
}
}
else
{
include_once "auth_form.html";
}
?>

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

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2014, 17:29
Ответы с готовыми решениями:

Скрыть форму входа на сайт, после успешной авторизации?
Как скрыть форму входа на сайт, после успешной авторизации??? И чтобы вместо...

После авторизации форма входа остается, ограничение просмотра страницы не авторизованных пользователей
Есть вот такая вот форма авторизации: &lt;div id=&quot;rega&quot;&gt; &lt;?php ...

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

Убрать с сайта кнопку входа после самого входа
На сайте расположено окно входа, которое открывается по кнопке, как сделать,...

Формы для авторизации и входа
Друзья! у меня что то не получается выдает вот такую вот ошибку: Warning:...

20
Виталюска
463 / 455 / 225
Регистрация: 26.09.2010
Сообщений: 2,336
16.11.2014, 18:24 #2
Цитата Сообщение от gsx Посмотреть сообщение
Но не могу понять почему при нажатии на любую ссылку меня возвращает на форму авторизации???
а где эти ссылки? если они ведут на index.php и у тебя твоя форма после авторизации не куда не пропадает то соответственно после обновления страницы она по новой посылает данные в скрипт который рпинимает пустые значения. Форма может быть и других страницах на которые ведут ссылки
0
gsx
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 18:39  [ТС] #3
Ссылки находятся в файле r.html, и форма пропадает после авторизации,но как только к примеру я хочу перейти в какой то раздел,мне сразу выдает форму авторизации.
0
Виталюска
463 / 455 / 225
Регистрация: 26.09.2010
Сообщений: 2,336
16.11.2014, 18:45 #4
на всех страницах прописано:
PHP
1
session_start();
0
gsx
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 18:50  [ТС] #5
Вот кстати думал я об этом, и в скриптах на которые ссылаюсь я прописал сессию но результат нулевой.
0
Виталюска
463 / 455 / 225
Регистрация: 26.09.2010
Сообщений: 2,336
16.11.2014, 18:55 #6
Цитата Сообщение от gsx Посмотреть сообщение
и в скриптах на которые ссылаюсь я прописал сессию но результат нулевой
в начале каждой страницы надо прописать
0
gsx
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 18:58  [ТС] #7
Само собой, до какого либо дескриптора html
0
Виталюска
463 / 455 / 225
Регистрация: 26.09.2010
Сообщений: 2,336
16.11.2014, 19:01 #8
Цитата Сообщение от gsx Посмотреть сообщение
Само собой, до какого либо дескриптора html
да, а после этого чтоб по новой проверить надо уничтожить сессию и начать по новой и начало сессии делай
Цитата Сообщение от gsx Посмотреть сообщение
if (mysql_affected_rows() == 1) {
здесь
0
gsx
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 19:05  [ТС] #9
Ну сессия и так уничтожается когда браузер закрываю. Зачем ее закрывать пока я работаю
0
pav1uxa
1855 / 1709 / 802
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
16.11.2014, 20:04 #10
gsx, тут совершенно не понятна структура Вашего сайта. Вот файл который Вы выложили - это что? Это индексная страница? Просто тут логика такая:
PHP
1
2
3
4
5
6
7
8
9
10
11
if(isset($_POST['login']) && isset($_POST['password']))
{
    // Сюда скрипт попадает, только если мы пришли сюда с какой то формы
    // То есть нажали на submit
    // Даже если уже авторизованы
}
else
{
    // Во всех остальных случаях попадаем сюда
    include_once "auth_form.html";
}
0
gsx
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 20:17  [ТС] #11
Та согласен что код дебильный. Логика такова-когда я захожу на сайт, мне отображается форма регистрация и ничего больше. Когда я регаюсь форма должна исчезнуть и появляется меню с ссылками, при нажатии на которые через глоб. Массив request я получаю данные и запускаю какой либо скрипт.ну на например нажав на обратная связь, я подключаю гостевую книгу. Понимаю прекрасно что это суровый быдлокод но хочу пока хотя бы на таком уровне разобраться

Добавлено через 4 минуты
И да это индекс и я именно хотел чтобы все делалось в пределах этого файла, а не переводило на другие файлы. К примеру,я тогда бы мог просто указать прямую ссылку на файл гостевой книги, а не записывать через request
0
pav1uxa
1855 / 1709 / 802
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
16.11.2014, 20:21 #12
Цитата Сообщение от gsx Посмотреть сообщение
Та согласен что код дебильный
Я говорю не про то что код дебильный, а про то что Вы даже не указали что это за файл Вы выложили.

Цитата Сообщение от gsx Посмотреть сообщение
И да это индекс и я именно хотел чтобы все делалось в пределах этого файла, а не переводило на другие файлы. К примеру,я тогда бы мог просто указать прямую ссылку на файл гостевой книги, а не записывать через request
Ну тогда нужно добавить условие, что если пользователь авторизован, то показывать ему то что надо. А у Вас вообще нигде не проверяется - авторизован ли пользователь.
0
gsx
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 20:25  [ТС] #13
PHP
1
2
3
4
f(isset($_POST['login']) && isset($_POST['password']))
{
    // Сюда скрипт попадает, только если мы пришли сюда с какой то формы
    // То есть нажали на submit
Этот комент меня навел на некую мысль что я не увижу на пока не инициализирую post, но для этого ж и записал клип чтобы каждый раз по новой не авторизовываться

Добавлено через 2 минуты
Блин долбанный т9, короч пока не авторизуюсь скрипт не увижу,авторизовуюсь, получаю доступ к коду и записываб сессию
0
pav1uxa
1855 / 1709 / 802
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
16.11.2014, 20:28 #14
Лучший ответ Сообщение было отмечено gsx как решение

Решение

Цитата Сообщение от gsx Посмотреть сообщение
записал клип
какой клип? оО

Добавлено через 2 минуты
Цитата Сообщение от gsx Посмотреть сообщение
Блин долбанный т9, короч пока не авторизуюсь скрипт не увижу,авторизовуюсь, получаю доступ к коду и записываб сессию
Вы понимаете что может быть 3 состояния.

1. Пользователь пришет на страницу, и ничего еще не успел сделать. Это у вас тут:
PHP
1
2
3
4
5
else
{
    // тут
    include_once "auth_form.html";
}
2. Пользователь ввел свои данные, и их нужно обработать и проверить, это у Вас тут:
PHP
1
2
3
4
if(isset($_POST['login']) && isset($_POST['password']))
{
    // тут
}
3. Пользователь УЖЕ авторизовался. Переменные $_SESSION['login'] и $_SESSION['password'] УЖЕ установлены. Вот проверки на то, что эти переменные уже установлены, у Вас нету.
0
Виталюска
463 / 455 / 225
Регистрация: 26.09.2010
Сообщений: 2,336
16.11.2014, 20:29 #15
Цитата Сообщение от gsx Посмотреть сообщение
но для этого ж и записал клип чтобы каждый раз по новой не авторизовываться
У меня это отдельный файл login.php где и заносим все в сессии, а дальше на странице уже проверяем если сессия запущена то все ок а если нет то делам перенаправление или выводим то что надо когда пользователь не зарегился
0
gsx
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 21:04  [ТС] #16
if (mysql_affected_rows() == 1) {
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
echo "<center>Добро пожаловать $login</center>";
Так разве это не сама авторизация?

Добавлено через 11 минут
Да тут стопудняк дело в "3. Пользователь УЖЕ авторизовался. Переменные $_SESSION['login'] и $_SESSION['password'] УЖЕ установлены. Вот проверки на то, что эти переменные уже установлены, у Вас нету."
Надо подумать как его реализовать. Мне приходится каждый раз регаться чтобы получить доступ к меню
0
Виталюска
463 / 455 / 225
Регистрация: 26.09.2010
Сообщений: 2,336
16.11.2014, 21:11 #17
Цитата Сообщение от gsx Посмотреть сообщение
Надо подумать как его реализовать. Мне приходится каждый раз регаться чтобы получить доступ к меню
я же написал сделай отдельные файлы авторизации и проверки сессии, в начале страницы подключай проверку сессии
0
gsx
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 21:17  [ТС] #18
Цитата Сообщение от Виталюска Посмотреть сообщение
я же написал сделай отдельные файлы авторизации и проверки сессии, в начале страницы подключай проверку сессии
та я это понял, мне интересно как вот это реализовать "Пользователь УЖЕ авторизовался. Переменные $_SESSION['login'] и $_SESSION['password'] УЖЕ установлены. Вот проверки на то, что эти переменные уже установлены, у Вас нету."

Добавлено через 3 минуты
хотя это ж и есть авторизация $_SESSION['login'] = $login;
$_SESSION['password'] = $password;
короч запутался я окончательно. завтра на свежую гголову подумаю
0
pav1uxa
1855 / 1709 / 802
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
16.11.2014, 21:58 #19
Цитата Сообщение от gsx Посмотреть сообщение
Так разве это не сама авторизация?
Цитата Сообщение от gsx Посмотреть сообщение
хотя это ж и есть авторизация $_SESSION['login'] = $login;
$_SESSION['password'] = $password;
Да это и есть авторизация, а не проверка на авторизацию. В общем каркас должен быть такой:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if(isset($_POST['login']) && isset($_POST['password']))
{
    // если попали сюда, значит пользователь заполнил форму
    // и нажал кнопку submit
    // То есть тут нужно проверить переменные логин и пароль и установить
    // переменные $_SESSION['login'] = $login и $_SESSION['password'] = $password
}
else if(isset($_SESSION['login']) && isset($_SESSION['password']))
{
    // сюда пользователь попадает, если у него установлены переменные
    // $_SESSION['login'] и$_SESSION['password']
    // то есть он уже авторизовался
}
else
{
    // сюда попадает тогда, когда только только зашел на страницу
    // и еще не авторизован и не вводил никаких данных, не отправлял форму
}

Не по теме:

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

0
gsx
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
17.11.2014, 00:25  [ТС] #20
спасибо, но не работает( вообще какая то хрень получается что я уже на сайте и т.п. хотя логика Ваша мне понятна

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

Добавлено через 1 час 35 минут
немного поменял структуру кода и вроде работает НО, когда я авторизуюсь мне выдает пустую страницу на которой только отображено "мой сайт" и только если я выделю заголовок и нажимаю enter, тогда отображается содержимое сайта.
<?php
header('Content-Type: text/html; charset=cp1251');
session_start();
include_once "connect.php";
echo "<div align='center' style='font-size: large'>Мой сайт</div><body bgcolor=#ffebcd>";
if(!empty($_POST['login']) && !empty($_POST['password'])) {
$login = trim($_POST['login']);
$password = md5(trim($_POST['password']));
$sql = "select login,password from users where login='$login' and password='$password'";
mysql_query($sql) or die(mysql_error());
if (mysql_affected_rows() == 1) {
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
}
else {
echo "<center>Пользователь не существует</center>";
}
}
elseif(isset($_SESSION['login']))
{
echo "<center>Добро пожаловать ".$_SESSION['login']."</center>";
include_once "r.html";
if (isset($_REQUEST['backbond'])) include_once "..\mygb\guestbook2.php";
if (isset($_REQUEST['contacts'])) echo <<<star
Наш адрес: проспект К. Маркса 112 <br>
тел. 678-34-23
star;
}
else
{
include_once "auth_form.html";
}
if(isset($_REQUEST['reg'])) include_once"reg_form.html";
?>

Добавлено через 23 минуты
вообщем решился вопрос следующим образом. код авторизации и сессии был вынесен в отдельный файл auth_form.php и получается index теперь вот такой
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
header('Content-Type: text/html; charset=cp1251');
echo "<div align='center' style='font-size: large'>Мой сайт</div><body bgcolor=#ffebcd>";
include_once "auth_form.php";
if(isset($_SESSION['login']))
{
    echo "<center>Добро пожаловать ".$_SESSION['login']."</center>";
    include_once "r.html";
    if (isset($_REQUEST['backbond'])) include_once "..\mygb\guestbook2.php";
    if (isset($_REQUEST['contacts'])) echo <<<star
        Наш адрес: проспект К. Маркса 112 <br>
        тел. 678-34-23
star;
}
else
{
    include_once "auth_form.html";
}
?>
Добавлено через 5 минут
Признаться раньше думал что include используется только для того чтобы не наводить срачь в основном файле, а получается разница не только в этом. Я так понимаю если я подключаю файл то его код выполняется независимо от основного файла или в чем тогда разница? почему так не работала. а так работает?!
0
17.11.2014, 00:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2014, 00:25

После авторизации повторно перекидывает обратно на страницу авторизации
Так, у меня есть проблема. Как только авторизируюсь, перекидывает обратно на...

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

Вывести форму входа
Всем привет! Не знаю кто как отреагирует, но вопрос наверное будет смешной. ...


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

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

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