За последние 24 часа нас посетили 17989 программистов и 1654 робота. Сейчас ищут 1365 программистов ...

Редирект после перехода по ссылке

Тема в разделе "Прочие вопросы по PHP", создана пользователем Machiavelli, 12 янв 2011.

  1. Machiavelli

    Machiavelli Активный пользователь

    С нами с:
    16 июл 2010
    Сообщения:
    6
    Симпатии:
    0
    Очень долго мучался - уже было начал думать, что это магия, но наконец выследил закономерность. Суть проблемы:

    Фреймуорк: Codeigniter. Есть контроллер admin с методом logout (выход из режима администрирования), чтобы обратиться к этому контроллеру нужно набрать адрес http://site/admin/logout. Есть навигационная панель администратора, где каждый пункт меню (каждая ссылка) обрамлена контейнером, при нажатии на который осуществляется переход по ссылке, которую он содержит:
    Код (Text):
    1. .click(function ()
    2. {
    3.     location.href = $(this).find('> a.navigation_item').attr('href');
    4. });
    Суть работы контроллера: он проверяет, админ ли это, если да - снимает администратора и перенаправляет на главную страницу, если нет - выводит ошибку 404 (нечего простому смертному знать о существовании такой страницы).
    Перенаправление:
    Код (Text):
    1. header('Location: '.$uri, true, 302); //$uri == 'http://upp/'
    2. exit;
    Есть 3 способа обратится к контролеру: нажать на ссылку, на контейнер вокруг ссылки (location.href) или вбить в строку браузера непосредственно адрес. В последних двух случаях отрабатывает все хорошо - снимает админа и переводит.
    В первом же происходит нечто интересное, на сколько я смог понять: оно так же снимает админа, потом почему-то редиректит на самого себя и соответственно уже без админа выводит 404. Почему так?
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Извеняюсь может быть я не так понял, вы при помощи js определяете администратора и делаете подобные манипуляции?

    или проверка уже средствами php происходит?
     
  3. Machiavelli

    Machiavelli Активный пользователь

    С нами с:
    16 июл 2010
    Сообщения:
    6
    Симпатии:
    0
    Естественно в PHP. Проблема решена, а заключалась она в том что при нажатии на ссылку, событие встплывало и почему-то сценарий вызывался 2 раза. event.stopPropagation() решило проблему.