За последние 24 часа нас посетили 16553 программиста и 1679 роботов. Сейчас ищут 857 программистов ...

header с возвратом назад

Тема в разделе "PHP для новичков", создана пользователем bboyandry, 4 май 2009.

  1. bboyandry

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

    С нами с:
    25 мар 2009
    Сообщения:
    24
    Симпатии:
    0
    Не знал как назвать тему иначе, но поясню всё сдесь
    И так допустим есть обработчик с формой при нажатии на кнопку Выход он перекидывает нас допустим в logout.php где у нас
    PHP:
    1. <?php
    2. ...
    3.  
    Да всё супер выкидывает из сессии но остаётся в файле http://......./logout.php при помощи header можно задать путь куда угодно.. Но меня интересует как сделать путь, на какой страничке я нажал выход на той он и сделал бы. Допустим я зашёл ав раздел новостей надоела сидеть под лгином нажал ны выход и там же остался и т.д.
    п.с. Форма логина находиться в навигации..
    п.с.с.
    Кто может рассказать разницу между @session_start(); и session_start(); :)
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    PHP:
    1. <?php
    2.  
    3.     // Code
    4.     header('Location '.$_SERVER['HTTP_REFFERER']);
    5.  
    6. ?>
    Оператор @ подавляет вывод ошибок.
     
  3. bboyandry

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

    С нами с:
    25 мар 2009
    Сообщения:
    24
    Симпатии:
    0
    при данном коде н обновляет тогда файл logout.php он у меня пустой и покаывает белый экран :(
    Любая страница при нажатии ВЫХОД -> logout.php -> страница где нажал выход тока уже без сессии.

    при session_star() меня на постояне ругается что чё та ам ну ошибка хотя пробелов нету и символов тоже.. а когда @session_star() всё ок может дело в кодировке у меня стоит UTF-8 без BOM.
     
  4. в анналы.
     
  5. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    PHP:
    1. <?php
    2.  
    3. if(isset($_SERVER['HTTP_REFERER'])){
    4.     header('Location '.$_SERVER['HTTP_REFERER']);
    5. }else{
    6.     header('Location xxxxxx'); // xxxx - страница, куда перебросить
    7. }
    8.  
    9. ?>
    Переадресовывает именно на ту страницу, с который пришел пользователь.
    НО: если вы не запускаете logout.php напрямую, в противном случае срабатывает вторая инструкция.
     
  6. zheka_13

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

    С нами с:
    1 май 2009
    Сообщения:
    71
    Симпатии:
    0
    ну как вариант - а зачем вообще делать логаут где-то на другой странице, если его можно сделать на той которой мы находимся...
    Самый простой вариант добавить к урлу еще одну GET переменную
    типа http://..../url.php?l=1
    и в хедере поставить проверку

    if (isset($_GET['l'])) session_destroy();

    юзер останется на той же странице только уже без сессии. Фактически это просто релоад страницы.
     
  7. bboyandry

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

    С нами с:
    25 мар 2009
    Сообщения:
    24
    Симпатии:
    0
    что то не выходит всёравно пусто :(

    Да вариант неплохой. Я делал что например на кнопке выход <a href='?l=1'>выход</a> при нажатии урл менялся но что бы достичь другой формы(форма входа логина) надо сделать обновление страницы, как можно было бы это одновременно сделаь ? Что бы нажать на выход занеслось в урл считал удалил обновил.
    что бы в урл красивше было без всяких ? и т.д. :)
     
  8. T-Mon

    T-Mon Активный пользователь

    С нами с:
    2 янв 2008
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    Kyiv
    Не читал всех сообщений и может быть окажусь не в теме.

    На HTTP_REFFERER полагаться вообще нельзя. На мой взгляд, единственный выход - сессия, в которую записывается ссылка на текущую страницу.
     
  9. bboyandry

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

    С нами с:
    25 мар 2009
    Сообщения:
    24
    Симпатии:
    0
    чего то я не понял :)
     
  10. T-Mon

    T-Mon Активный пользователь

    С нами с:
    2 янв 2008
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    Kyiv
    Ну пы сейчас, например, на viewtopic.php?t=18580 - записываем это значение в сессию, и следующая страница знает куда возвращаться...
    Есть еще вариант - в ссылку на log out дописываем ?wayback= и безопасно для URL'а закодированный адрес текущей страницы (или с параметрами ?file=<current_file> и список всех GET'овских аргументов через &). Безопасно и сработает у всех, даже с выключенными куками.

    А HTTP_REFFERER нам может прислать все что угодно, например, сообщение о том, что мы идиоты.
     
  11. bboyandry

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

    С нами с:
    25 мар 2009
    Сообщения:
    24
    Симпатии:
    0
    Чего то я на ночь глядя плохо сооброжаю.. :)
    допустим если есть такое
    PHP:
    1. <input type=hidden name=input value=out ><input type=submit name=submit value=Logout> //кнопка выхода
    2.  
    3. if ($_POST['input']=='out')
    4. {
    5. }
    6.  
    7.  
    всё срабатывает также как и с вариантом
    PHP:
    1.  
    2. <a href='?l=1'>exit</a>
    3. if (isset($_GET['l']))
    4. {
    5. }
    6.  
    Но блин надо дополнительное обновление или переход куда на другую страницу что бы пропала форма авторизированого юзера на форму с вводом узера и пасса :(
    через хедер просто выкинуть на главную страницу тоже не хочется как то по тупому выйдет :( чёрт.
     
  12. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    session_start - стартует сессию
    session_star - делает из сессии звезду :D
     
  13. zheka_13

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

    С нами с:
    1 май 2009
    Сообщения:
    71
    Симпатии:
    0
    ну а чем плохо дополнительное обновление.... дешево и сердито... а так еще на javascript прийдется примочки писать... а смысл?
     
  14. T-Mon

    T-Mon Активный пользователь

    С нами с:
    2 янв 2008
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    Kyiv
    test1.php
    PHP:
    1. <?php
    2.  
    3. echo ('<a href = "test2.php?wayback=' . urlencode ($_SERVER ['PHP_SELF']) . '">Logout</a>');
    4.  
    5. ?>
    test2.php
    PHP:
    1. <?php
    2.  
    3. header ('Location: ' . urldecode ($_GET ['wayback']));
    4.  
    5. ?>
     
  15. bboyandry

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

    С нами с:
    25 мар 2009
    Сообщения:
    24
    Симпатии:
    0
    T-Mon
    Ура, этот код работает но у меня сразу же возникла другая проблема, по поводу новостей при входе в новость они у в урл так выглядят /news/news_view.php?id=12 и при выходе на этой страничке он ругается.

    ДА чего то я не обратил внимание на это дело :D Исправим :)