Задать вопрос
@GIRUPC
Веб-программист

Проблемы с сессиями и закрытием доступа?

Добрый день! Перед нами стоит несколько задач.
1) Чтобы не авторизованный пользователь не мог получить доступ ко внутренней странице.
Т.е. когда не было сессии сессии был закрыт доступ к этой странице kuptso4c.beget.tech/levels и при нажатии кнопки начать срабатывала переадресация на авторизацию kuptso4c.beget.tech/avtorizacziya (это работает), но после успешной авторизации выкидывает на главную главную почему то kuptso4c.beget.tech/(.

2) Так же чтобы нельзя было пройти по прямой ссылке kuptso4c.beget.tech/levels , а в случае если человек пытается перейти по ней то его переадресовывало на главную или на авторизацию. Пытались это сделать но нечего не вышло((

3) Чтобы при нажатии кнопки выход которая находится на внутренней странице kuptso4c.beget.tech/levels сессия прекращалась и переадресовывала на главную kuptso4c.beget.tech/. Сделали снипет, вызвали его в html. так же прилагаю сам снипет

<?php
session_start();
session_destroy();
header('Location: /index');


<div class="inner-people">
                        <li><a href="#" class=""><img src="img/people-icon.png" alt=""></a>
                            <ul class="inner-menu-people">
                                <li><a href="">Мой профиль</a></li>
                                <li><a href="">Мои балы</a></li>
                                <li><a href="">Корзина</a></li>
                                <li><a href="">Блог</a></li>
                                <li><a href="">Мой прогресс</a></li>
                                <li><a href="[[logout?      ]]">Выход</a></li>
                            </ul>
                        </li>
                    </div>


Опыта много не имеем. Сайт работает на MODX, весь PHP код реализуется в снип. Привожу пример кода для авторизации. Там наверняка много ошибок.
<?php
session_start();
$login = $_POST['login']; //Написать условия проверки
if(isset($_POST['password']) && strlen($_POST['password'])>0){
    $password = strip_tags($_POST['password']);
    $password = md5($password);
   
}
$whereLog = array(
    'parent'=> 3,
    'description' => $login
    );
$login = $modx->getObject('modResource', $whereLog);
if(isset($login)){
   if($password == $login->get('introtext'))
   {
       $id = $login->get('id');
       $_SESSION['id'] = $id;
       session_start();

       $_SESSION['login'] = TRUE;
       header('Location: /');
      
   }
   else
   session_start();

    if (! isset($_SESSION['login']))
    {
       header('Location: /nopass.html');
       return;
   }
  
  
}

else
if (! isset($_SESSION['password']))
{
    header('Location: /nouser.html');
    return;
}
return;


Буду признателен в решении проблемы)
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
но после успешной авторизации выкидывает на главную главную почему то
У вас это явно задано же:
$_SESSION['login'] = TRUE;
header('Location: /');


чтобы нельзя было пройти по прямой ссылке
А какие еще бывают ссылки, "непрямые"?

Буду признателен в решении проблемы)
Вы немножко ошиблись, фрилансеры на соседнем сайте.

P.S.: и оформите код нормально, невозможно же читать. (кнопка с троеточием)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы