За последние 24 часа нас посетили 18726 программистов и 1595 роботов. Сейчас ищет 1971 программист ...

Авторизац и проверк прав на просмотр страниц через php сесии

Тема в разделе "Сделайте за меня", создана пользователем dmuskovets, 2 янв 2016.

  1. dmuskovets

    dmuskovets Новичок

    С нами с:
    2 янв 2016
    Сообщения:
    5
    Симпатии:
    0
    Доброго времени суток. Я новичек, недавно начал изучать хтмл\цсс и немного пхп создавая простенький статический сайт. И практически сразу столкнулся с проблемой, которую не могу решить уже двое суток. Искать пробовал, откуда и сумел немного уточнить и конкретизировать задачу. Но видимо недостаток знаний не позволяет мне допилить множество "готовых на 90% примеров", потому и обращаюсь к вам.

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

    Я в уме представляю следующую модель всего этого:

    1) Авторизацию и проверку прав решил делать по методу сессий. Как-то с виду оно показалось более простым для моего понимания и достаточным для пользователей решением.
    2) Где-то должна быть создана форма с одним полем (да, достаточно одного) и кнопкой, которая будет посылать данные из поля в файл-обработчик, который сверив данные будет открывать сессию и записывать в нее переменную с чем-то типа true или 1 или писать что таких данных в списке нету.
    3) для того, чтобы контролировать имеет ли пользователь сайта доступ к конкретной странице или нет - на каждой из "защищенных" страниц должна быть некая проверка переменной из сессии, и если проверка не прошла то перенаправлять на форму ввода данных и говорить "залогиньтесь".

    Но это всё только в уме, а на практике ни один пример не дает мне результатов, как я его не кручу :(

    У меня есть страница index.php в которую инклудятся части сайта (меню, футтер и т.д..) и по нажатии на пункты меню - динамически меняются блоки контента, некоторые из которых и планируется "защитить".

    Помощь собственно нужна в следующих вопросах:
    1) где должна размещаться форма для авторизации.
    2) что нужно вписать в страницу для проверки данных из сессии и если они не соответствуют - перенаправлять на форму авторизации.
    3) каким должен быть код файла-обработчика данных из формы

    Я понимаю, получается что я ничего не сделал, но ведь раздел именно для таких лентяев :( Очень надеюсь на вашу помощь и советы. Если возможно то по максимуму комментируйте пожалуйста, потому что хочу разобраться в вопросе.
     
  2. DemoN1810

    DemoN1810 Новичок

    С нами с:
    16 дек 2015
    Сообщения:
    97
    Симпатии:
    0
    Re: Авторизац и проверк прав на просмотр страниц через php с

    1) без разницы, как хочешь
    2) данные из сессии берутся из $_SESSION['name'], перенаправление header("Location: /forma.php")
    3) смотря как отправляешь форму, $_GET либо $_POST (лучше пост), хэширование пароля, занесение в базу (регистрация), проверка из базы (вход)
     
  3. dmuskovets

    dmuskovets Новичок

    С нами с:
    2 янв 2016
    Сообщения:
    5
    Симпатии:
    0
    Спасибо, немного прояснилось... немного, но не всё :(
    Всё что у меня есть сейчас:
    1) файл обработчик auth.php:
    Код (PHP):
    1. <?php
    2. if ($_POST['tel'] == '777') $_SESSION['auth'] = '1'; else {?>
    3.   Введите ваш номер телефона для авторизации
    4.   <form method='POST' action = 'auth.php'>
    5.   <input type='text' name='tel'>
    6.   <input type='submit' value='Залогинится'>
    7.   </form>
    8. <?}?>
    2) файл, который нужно защитить katalog.php:
    Код (PHP):
    1. <?php
    2. if ($_SESSION['auth']<>1) {
    3.   header("Location: /auth.php");
    4. }
    5. ?>
    6.  
    7. KTALOG
    Что еще хочется сделать:
    1) Чтобы при позитивном срабатывании проверки поля Tel автоматом открывалась страница katalog.php
    2) Чтобы сопоставление велось не только с 777 а с неким масивом данных, в идеале размещенном в отдельном файле.
    3) Нормально ли с точки самой примитивной зрения безопасности что форма входа и данные для сверки находятся в одном пхп файле? Если можно, подскажите как это можно исправить.

    Подскажите пожалуйста в какую сторону смотреть, и если есть замечания по моему недокоду то тоже пишите их пожалуйста. Хочется хоть это простенькое сделать правильно.

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  4. dmuskovets

    dmuskovets Новичок

    С нами с:
    2 янв 2016
    Сообщения:
    5
    Симпатии:
    0
    Никак не могу справится ( пните нуба в нужную сторону пожалуйста, а лучше дайте совет как исправить чтоб работало
    Есть файл auth.php который должен присвоить 1 в сессию auth и автоматом без лишних кликов открыть страницу katalog.php, или отобразить форму...А он только ошибки выбивает.

    Код (PHP):
    1. <?php
    2. if ($_POST['tel'] == '777') $_SESSION['auth'] = '1' header("Location: /katalog.php"); else {?>
    3. Введите три 7
    4. <form method='POST' action = 'auth.php'>
    5. <input type='text' name='tel'>
    6. <input type='submit' value='Проверить>
    7. </form>
    8. <?}?>
    Чувствую что проблема в синтаксисе, но что именно и где я пропустил - понять не могу.
     
  5. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Код (PHP):
    1. if ($_POST['tel'] == '777') $_SESSION['auth'] = '1' header("Location: /katalog.php"); else { 
    вот именно поэтому нечего так писать. Нефиг лениться и не дописывать постоянно фигурные скобки. Вот ваша запись в нормальном виде:
    Код (PHP):
    1. if ($_POST['tel'] == '777')
    2.           $_SESSION['auth'] = '1' 
    3.           header("Location: /katalog.php"); 
    4. else { 
    А теперь:
    1. Если блок кода не оформлен в фигурные скобки, выполняется только ОДНА строка после if.
    2. В отформатированном мною варианте видно, что не хватает точки с запятой.
    Совет дал, исправляйте.
     
  6. dmuskovets

    dmuskovets Новичок

    С нами с:
    2 янв 2016
    Сообщения:
    5
    Симпатии:
    0
    Спасибо что не бросаете меня, сам я точно не справлюсь вовремя.
    Чего-то я совсем в ступоре, где не поставлю скобку - пишет
    Код (PHP):
    1. unexpected '{' 
    без
    Код (PHP):
    1. header("Location: /katalog.php") 
    оно еще более-менее работает, а теперь на него ругается:
    Код (PHP):
    1. unexpected T_STRING
     
  7. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    уф, ладно
    Код (PHP):
    1. if ($_POST['tel'] == '777'){
    2.           $_SESSION['auth'] = '1';
    3.           header("Location: /katalog.php"); 
    4.           exit();
    5. }
    6. else {
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.116
    Симпатии:
    1.244
    Адрес:
    там-сям
    Re: Авторизац и проверк прав на просмотр страниц через php с

    mr.akv, ты потерял exit. это важно!
     
  9. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Re: Авторизац и проверк прав на просмотр страниц через php с

    спасибо, поправил
     
  10. dmuskovets

    dmuskovets Новичок

    С нами с:
    2 янв 2016
    Сообщения:
    5
    Симпатии:
    0
    Re: Авторизац и проверк прав на просмотр страниц через php с

    Спасибо большое за код. Всё отлично работает.