PHP.SU

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

Страниц (24): В начало « ... 16 17 18 19 20 21 22 [23] 24 »

> Найдено сообщений: 359
Hapson Отправлено: 15 Июня, 2013 - 23:40:00 • Тема: Авторизация • Форум: Вопросы новичков

Ответов: 47
Просмотров: 1663
teddy пишет:
Hapson
Ошибок быть не должно. Вставляйте этот код в "шапку" файла и все будет работать. Данные GET параметра можете установить конечно же свои. И файл по своему назвать ) Ошибка может быть в случае если вы отправляете заголовок после любого вывода в браузер либо в файле присутствует BOM...

Понятно, спасибо.
Ну да, ошибка когда уже что-то выводилось
(Добавление)
Так что лучше загонять в массив сессии? id или логин-пароль?
Безопасно ли отдавать в сессию логин-пароль?

Спойлер (Отобразить)
Hapson Отправлено: 15 Июня, 2013 - 23:33:43 • Тема: Авторизация • Форум: Вопросы новичков

Ответов: 47
Просмотров: 1663
Спойлер (Отобразить)

А потом


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

Вопрос снят
mysql_fetch_assoc
mysql_fetch_array
Hapson Отправлено: 15 Июня, 2013 - 23:27:41 • Тема: Авторизация • Форум: Вопросы новичков

Ответов: 47
Просмотров: 1663
teddy
А что можно использовать, если header("Location: index.php"); вызывает ошибку?
Я вот что нашел, не знаю, корректно ли это
CODE (htmlphp):
скопировать код в буфер обмена
  1. function redirect($url, $timer = 0){
  2.         echo '<meta http-equiv="refresh" content="' . $timer . '; url=' . $url . '">';
  3. }
  4. //а далее
  5. redirect('нужный урл', время в сек);


caballero пишет:
какая разница кто ее вызвал - суть дела от этого не меняется
не надо этого делать ни тебе ни ТС.


ну я так понял unset($_SESSION['id']) достаточно?
Hapson Отправлено: 15 Июня, 2013 - 23:23:15 • Тема: Авторизация • Форум: Вопросы новичков

Ответов: 47
Просмотров: 1663
[quote=Мелкий][quote=Hapson]
Вы НЕ авторизованы, страница открыта из кэша браузера.[/quote]
Да, действительно.
[quote=Мелкий]
Hapson пишет:
Попробуйте что-нибудь сделать и получите отказ доступа.

Там пусто - делать нечего было Радость
Вставил тупо ссылку <a href="/admin/index.php">Обновить</a>
И по нажатию вылет из админки на форму авторизации.
Спасибо.
Hapson Отправлено: 15 Июня, 2013 - 21:40:06 • Тема: Авторизация • Форум: Вопросы новичков

Ответов: 47
Просмотров: 1663
soffrick пишет:

наверно и выборку надо делать перечисляя все поля, пусть их будет даже больше 20, вместо того чтобы использовать *

Я ж учусь... Ламер
Этот косяк я уже понял
(Добавление)
Уффффф!!!!!
Я уже ничего не понимаю....
Почему после выхода из админки и нажатия кнопки назад в браузере, я снова авторизован???

Приведу еще раз файлы, немного измененные.
Входим в админку
Спойлер (Отобразить)


Читается конфиг, функции и далее входим в auth.php
Спойлер (Отобразить)


Далее в форму авторизации
Спойлер (Отобразить)


Файл админки пропускается, так как $user_status != 1

После авторизации попадаем в админку
Спойлер (Отобразить)


Здесь есть кнопка выхода: <a href="http://test/admin/index.php?exit=ok">Выйти</a>

Нажав на эту кнопку, мы снова попадаем на начало index.php далее в auth.php, где по идее юзер должен быть разлогинен.
Так оно и происходит. Но если нажать назад в браузере, то я снова в админке! Как так?
Hapson Отправлено: 15 Июня, 2013 - 20:33:29 • Тема: Авторизация • Форум: Вопросы новичков

Ответов: 47
Просмотров: 1663
Я может не до конца понял принцип работы сессии...
А что есть в сессии, после того как она создана, но в нее еще ничего не передали?
Hapson Отправлено: 15 Июня, 2013 - 19:48:54 • Тема: Авторизация • Форум: Вопросы новичков

Ответов: 47
Просмотров: 1663
Короче чета я намутил с авторизацией... кучу файлов понаподключал, теперь что-то сам ничего не пойму...
(Добавление)
Как оно вообще должно быть?

пользователь открывает файл site.ru/admin/index.php
сразу идет проверка на присутствие в сессии id
если он есть и статус юзера с этим id равен 1, то показываем админку
если id есть но статус пользователя с этим id не равен 1, то редирект на главную
если id в сессии нет, то идем дальше и проверяем ввел ли пользователь логин-пароль в форму
если ввел, то проверяем, есть ли эта пара в базе
если есть, то смотрим какой статус у юзера с данной парой логин-пароль
если статус 1, то показываем админку
если статус не 1, то редирект на главную

в шаблоне админки сделать ссылку на файл exit.php, в котором будет unset($_SESSION['id']) и редирект на... форму авторизации например.

Правильно?

То есть нужны 4 файла:
index.php - через него вход и к нему подключаются остальные
auth.php - файл где проверяется наличие id в сессии и логин-пароль из формы
index_adm.php - шаблон админки
exit.php - удаление id из сессии
Hapson Отправлено: 15 Июня, 2013 - 19:33:26 • Тема: Авторизация • Форум: Вопросы новичков

Ответов: 47
Просмотров: 1663
VygVik пишет:


Так всего много)
Логин и пароль желательно передать, ведь на основании этого можно авторизоваться. Я думаю взломать можно любой сайт, дело за профессионалом.
После выхода с админки нужно завершить сессию, тогда нажимая в браузере назад вы не сможете войти в админку.

Ну там же смысл в чем.

Сначала проверяется, есть ли в сессии "id" пользователя. Если есть, то из базы выбираются все данные этого "id". То есть, если "id" = 5, то из базы выбираются все данные на пользователя с "id" = 5 (логин, пароль, статус и id).
По задумке есть 4 статуса у пользователей: 0 - гость, 1 - админ, 2 - модер, 3 - юзер.
Далее проверяется, если в выбранных данных статус равен 1, значит это админ, можно показать админку.

Если в сессии "id" не было, тогда из базы выбираются данные согласно паре логин-пароль, которые ввел пришедший юзер.
Если в этих данных статус пользователя = 1, то значит это админ, если нет, значит не админ - отправляем юзера на главную, ему сюда нельзя.

Если пользователь нажал кнопку выход (<a href="?exit=ok">Выйти</a>) в админке, тогда удаляется "id" из сессии и уничтожается сессия.
Но почему-то при нажатии кнопки назад в браузере, сессия опять жива и "id" админа опять существует в сессии.
(Добавление)
Master_pascal пишет:
без куки и сессий регистрацию не сделаешь. гг , а зачем ты страницу ,где кнопка выйти, показал?
показывай чо там у тебя в exit.php
(Добавление)
тебе надо создать exit.php и сделать unset($_SESSION['login'])


Нету exip.php.
В админке есть <a href="?exit=ok">Выйти</a>
а в файле авторизации
CODE (htmlphp):
скопировать код в буфер обмена
  1. if(!empty($_GET['exit']) == 'ok'){
  2.         unset($_SESSION['id']);
  3.         session_destroy();
Hapson Отправлено: 15 Июня, 2013 - 14:47:12 • Тема: Как прописать путь от корня - запутался... • Форум: Вопросы новичков

Ответов: 25
Просмотров: 1602
esterio пишет:
получится то что надо

А ну да, то есть конфликта здесь никакого не будет.
Просто можно будет уже не думать, откуда попал на тот или иной файл - из фронта или из админки, просто везде писать ROOT.
Спасибо! Улыбка


все еще не могу жать на спасибо...
Hapson Отправлено: 15 Июня, 2013 - 14:39:59 • Тема: Как прописать путь от корня - запутался... • Форум: Вопросы новичков

Ответов: 25
Просмотров: 1602
esterio
А ничего, если в index.php будет

а в admin/index.php будет

Это же получается... что это вообще получается?
Hapson Отправлено: 15 Июня, 2013 - 13:59:00 • Тема: Как прописать путь от корня - запутался... • Форум: Вопросы новичков

Ответов: 25
Просмотров: 1602
LIME пишет:
нет смысла
винда понимает оба слеша


Понятно, спасибо.
Как же тогда быть с админкой... Вход в админку через другой index.php, который лежит в корень/admin/index.php
(Добавление)
Может прописать константу в config.php, так как он подключен к обоим index.php и лежит в корне
Hapson Отправлено: 15 Июня, 2013 - 13:51:56 • Тема: Как прописать путь от корня - запутался... • Форум: Вопросы новичков

Ответов: 25
Просмотров: 1602
А есть смысл заменять слеш на DIRECTORY_SEPARATOR ?
Ну например так

CODE (htmlphp):
скопировать код в буфер обмена
  1. define('DS', DIRECTORY_SEPARATOR);
  2. //а потом писать не так
  3. include_once ROOT . '/inc/fun.php';
  4. //а вот так
  5. include_once ROOT DS 'inc' . DS . 'fun.php';
Hapson Отправлено: 15 Июня, 2013 - 13:47:12 • Тема: Как прописать путь от корня - запутался... • Форум: Вопросы новичков

Ответов: 25
Просмотров: 1602
DelphinPRO пишет:
Hapson пишет:
define('ROOT', __DIR__ . '/');
Hapson пишет:
который в корне... хотя нет разницы где он

есть разница.
при такой записи, вы получаете в константу ROOT путь до файла в котором она определяется. вдумайтесь в это предложение.


Вообще подобную константу логичнее определять в точке входа (index.php), т.к. этот файл всегда лежит в корне сайта.

Разумеется данный вариант прокатит, если вы используете единую точку входа в своем приложении, т.е. все запросы проходят через index.php.

Ну да, у меня все будет через index.php
Вот он
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. define('DANGER', 1);
  3. include_once './inc/fun.php';
  4. cms_install(); //проверяем, установлена ли cms
  5. include_once './config.php';
  6. include_once './template/' . TEMPLATE . '/index_home.php';
  7. ?>


И я его изменю так

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. define('DANGER', 1);
  3. define('ROOT', __DIR__);
  4. include_once ROOT . '/inc/fun.php';
  5. cms_install(); //проверяем, установлена ли cms
  6. include_once ROOT . '/config.php';
  7. include_once ROOT . '/template/' . TEMPLATE . '/index_home.php';
  8. ?>


...работает
Hapson Отправлено: 15 Июня, 2013 - 13:33:45 • Тема: Как прописать путь от корня - запутался... • Форум: Вопросы новичков

Ответов: 25
Просмотров: 1602
Сейчас поэкспериментировал.
CODE (htmlphp):
скопировать код в буфер обмена
  1. /*Вставлял разные варианты в файл index.php, который лежит в корне*/
  2.  
  3. echo getcwd();
  4. //выводит Z:\home\test\www
  5.  
  6. echo __DIR__;
  7. //выводит Z:\home\test\www
  8.  
  9. echo dirname(__FILE__);
  10. //выводит Z:\home\test\www
  11.  
  12. /*А теперь все тоже вставлял в корень/template/home/index_home.php*/
  13.  
  14. echo getcwd();
  15. //выводит Z:\home\test\www
  16.  
  17. echo __DIR__;
  18. //выводит Z:\home\test\www\template\home
  19.  
  20. echo dirname(__FILE__);
  21. //выводит Z:\home\test\www\template\home


Получается, что я могу прописать в config.php (который в корне... хотя нет разницы где он), так:

CODE (htmlphp):
скопировать код в буфер обмена
  1. define('ROOT', __DIR__ . '/');
  2. //f далее в любом файле, независимо от вложенности буду писать
  3. include ROOT . 'template/home/index_home.php';
  4. //или
  5. include ROOT . 'inc/function.php';
  6. //ну и так далее

(Добавление)
О нет нет.
Если я определю константу ROOT как __DIR__ то это нужно сделать только в том файле, который лежит в корне.
Hapson Отправлено: 15 Июня, 2013 - 13:12:53 • Тема: Как прописать путь от корня - запутался... • Форум: Вопросы новичков

Ответов: 25
Просмотров: 1602
LIME пишет:
нет неправильно
это будет путь от корня до файла в котором определяется константа
если это выполнить в index.php лежащем в корне тогда да...

Ага, то есть, если я определю эту константу в корне (в файле config.php), то я смогу в любом файле потом писать... ну например в файле шаблона хочу что-то подключить:

1. в config.php (в корне сайта) прописал define('ROOT', dirname(__FILE__).'/');
2. файл шаблона лежит корень/template/home/index.php
3. а то что хочу подключить к нему (например function.php) лежит в корень/inc/function.php

И чтобы включить function.php в index.php, я в index.php пишу
CODE (htmlphp):
скопировать код в буфер обмена
  1. include ROOT . 'inc/function.php';
  2. //получается ROOT эквивалентно ../


Или я опять не понял?

Страниц (24): В начало « ... 16 17 18 19 20 21 22 [23] 24 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB