Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29

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

16.11.2014, 17:29. Показов 4759. Ответов 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)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2014, 17:29
Ответы с готовыми решениями:

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

Как сделать после первого входа в приложению заново не добавлял эти данные?
Здравствуйте! Я взял этот код с youtube, Я новичок. Как сделать после первого входа в приложению заново не добавлял эти данные? ...

Как сделать после первого входа в приложению заново не добавлял эти данные?
Здравствуйте! Я взял этот код с youtube, Я новичок. Как сделать после первого входа в приложению заново не добавлял эти данные? ...

20
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
16.11.2014, 18:24
Цитата Сообщение от gsx Посмотреть сообщение
Но не могу понять почему при нажатии на любую ссылку меня возвращает на форму авторизации???
а где эти ссылки? если они ведут на index.php и у тебя твоя форма после авторизации не куда не пропадает то соответственно после обновления страницы она по новой посылает данные в скрипт который рпинимает пустые значения. Форма может быть и других страницах на которые ведут ссылки
0
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 18:39  [ТС]
Ссылки находятся в файле r.html, и форма пропадает после авторизации,но как только к примеру я хочу перейти в какой то раздел,мне сразу выдает форму авторизации.
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
16.11.2014, 18:45
на всех страницах прописано:
PHP
1
session_start();
0
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 18:50  [ТС]
Вот кстати думал я об этом, и в скриптах на которые ссылаюсь я прописал сессию но результат нулевой.
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
16.11.2014, 18:55
Цитата Сообщение от gsx Посмотреть сообщение
и в скриптах на которые ссылаюсь я прописал сессию но результат нулевой
в начале каждой страницы надо прописать
0
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 18:58  [ТС]
Само собой, до какого либо дескриптора html
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
16.11.2014, 19:01
Цитата Сообщение от gsx Посмотреть сообщение
Само собой, до какого либо дескриптора html
да, а после этого чтоб по новой проверить надо уничтожить сессию и начать по новой и начало сессии делай
Цитата Сообщение от gsx Посмотреть сообщение
if (mysql_affected_rows() == 1) {
здесь
0
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 19:05  [ТС]
Ну сессия и так уничтожается когда браузер закрываю. Зачем ее закрывать пока я работаю
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
16.11.2014, 20:04
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
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 20:17  [ТС]
Та согласен что код дебильный. Логика такова-когда я захожу на сайт, мне отображается форма регистрация и ничего больше. Когда я регаюсь форма должна исчезнуть и появляется меню с ссылками, при нажатии на которые через глоб. Массив request я получаю данные и запускаю какой либо скрипт.ну на например нажав на обратная связь, я подключаю гостевую книгу. Понимаю прекрасно что это суровый быдлокод но хочу пока хотя бы на таком уровне разобраться

Добавлено через 4 минуты
И да это индекс и я именно хотел чтобы все делалось в пределах этого файла, а не переводило на другие файлы. К примеру,я тогда бы мог просто указать прямую ссылку на файл гостевой книги, а не записывать через request
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
16.11.2014, 20:21
Цитата Сообщение от gsx Посмотреть сообщение
Та согласен что код дебильный
Я говорю не про то что код дебильный, а про то что Вы даже не указали что это за файл Вы выложили.

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

Добавлено через 2 минуты
Блин долбанный т9, короч пока не авторизуюсь скрипт не увижу,авторизовуюсь, получаю доступ к коду и записываб сессию
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
16.11.2014, 20:28
Лучший ответ Сообщение было отмечено 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
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
16.11.2014, 20:29
Цитата Сообщение от gsx Посмотреть сообщение
но для этого ж и записал клип чтобы каждый раз по новой не авторизовываться
У меня это отдельный файл login.php где и заносим все в сессии, а дальше на странице уже проверяем если сессия запущена то все ок а если нет то делам перенаправление или выводим то что надо когда пользователь не зарегился
0
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
16.11.2014, 21:04  [ТС]
if (mysql_affected_rows() == 1) {
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
echo "<center>Добро пожаловать $login</center>";
Так разве это не сама авторизация?

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

Добавлено через 3 минуты
хотя это ж и есть авторизация $_SESSION['login'] = $login;
$_SESSION['password'] = $password;
короч запутался я окончательно. завтра на свежую гголову подумаю
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
16.11.2014, 21:58
Цитата Сообщение от 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
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 29
17.11.2014, 00:25  [ТС]
спасибо, но не работает( вообще какая то хрень получается что я уже на сайте и т.п. хотя логика Ваша мне понятна

Добавлено через 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.11.2014, 00:25
Помогаю со студенческими работами здесь

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

Заново показать форму после завершения стороннего процесса, запущенного из нее
Добрый день! Имеется форма, из которой запускается программа через WinExec. При запуске программы, форма невидима, пока работает программа....

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

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

Скрыть форму после авторизации
как написать что бы форма авторизации скрылась после успешной авторизации &lt;?php session_start(); // Стартуем сессию ?&gt; ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru