За последние 24 часа нас посетили 35462 программиста и 1746 роботов. Сейчас ищет 851 программист ...

возврат на страницу

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

  1. Roman82

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

    С нами с:
    26 ноя 2008
    Сообщения:
    101
    Симпатии:
    0
    Здравствуйте!
    Скажите, можно ли сделать так, чтобы после обращения к скрипту происходил возврат на туже страницу с которой было обращение?
    К примету есть скрипт 1.php и к этому скрипту идет обращение с нескольких страниц, как сделать так чтобы скрипт возвращал на ту же страницу с которой было обращение к этому скрипту?

    Если это возможно то подскажите как это осуществить?

    Смотрел разный материал, но так у меня и не получилось это сделать.
    Спасибо!
     
  2. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    $_SESSION
    $_POST
    $_GET
     
  3. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Можно еще смотреть $_SERVER['HTTP_REFERER'], хотя этот вариант не всегда рабочим может быть.
     
  4. biperch

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

    С нами с:
    6 июн 2009
    Сообщения:
    28
    Симпатии:
    0
    $_SERVER['HTTP_REFERER'] либо пробовать явой хистори
    попробуй в исполняемый скрипт сослать адресс родителя типа
    $_SERVER['SCRIPT_NAME']

    PHP:
    1.  
    2. Суперглобальные переменные PHP
    3.  
    4. Серверные переменные $_SERVER
    5.  
    6. Примечание: Впервые появилась в PHP версии 4.1.0. В более ранних версиях используется переменная $HTTP_SERVER_VARS.
    7.  
    8. $_SERVER - это суперглобальный массив, содержащий такую информацию, как заголовки, пути, размещение скриптов. Данный массив создается веб-сервером. Нет никиких гарантий, что веб-сервер снабдит данный суперглобальный массив всей предопределенной информацией. За детельной информацией по переменным, содержащихся в данном суперглобальном массиве, обратитесь к спецификации CGI 1.1.
    9.  
    10. Суперглобальные переменные доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_SERVER. На это не влияют даже настойки конфигурации PHP (php.ini).
    11.  
    12. Переменная $HTTP_SERVER_VARS содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_SERVER_VARS и $_SERVER - это различные переменные).
    13.  
    14. Вы можете не найти некоторый переменные, которые могут содержаться в массиве $_SERVER, если вы запускаете PHP из коммандной строки.
    15.  
    16. PHP_SELF
    17.  
    18. Имя файла в настоящее время выполняющегося сценария, относительно корня документа. Например, $_SERVER ['PHP_SELF'] в сценарии при адресе [url=http://example.com/test.php/foo.bar]http://example.com/test.php/foo.bar[/url] возвращает /test.php/foo.bar. Предопределенная константа __FILE__ содержит полный путь и имя файла.
    19. Если PHP выполняется из командной строки, эта переменная содержит имя сценария (доступно, начиная с PHP 4.3.0).
    20.  
    21. argv
    22.  
    23. Массив параметров, переданных сценарию. При использовании метода GET, он будет содержать строку запроса.
    24.  
    25. argc
    26.  
    27. Содержит номер параметров командной строки, переданных сценарию (если они переданы из командной строки).
    28.  
    29. GATEWAY_INTERFACE
    30.  
    31. Содержит версию CGI, которую использует веб-сервер (Например, CGI/1.1).
    32.  
    33. SERVER_NAME
    34.  
    35. Имя веб-сервера, под которым текущий скрипт выполняется. Если скрипт исполняется на виртуальном веб-сервере, переменная будет содержать имя веб-сервера, которое было определено для виртуального веб-сервера.
    36.  
    37. SERVER_SOFTWARE
    38.  
    39. Идентификационная строка веб-сервера, которая передается через заголовки при ответах на запросы сервера.
    40.  
    41. SERVER_PROTOCOL
    42.  
    43. Имя и версия используемого протокола HTTP (Например, HTTP/1.1).
    44.  
    45. REQUEST_METHOD
    46.  
    47. Используемый метод запроса веб-страницы ( 'GET', 'HEAD', 'POST', 'PUT' ).
    48.  
    49. REQUEST_TIME
    50.  
    51. Время начала запроса веб-страницы. Доступна, начиная с PHP 5.1.0
    52.  
    53. QUERY_STRING
    54.  
    55. Строка запроса веб-страницы, если она существует, через которую был получен доступ к странице.
    56.  
    57. DOCUMENT_ROOT
    58.  
    59. Корневая директория, под которой выполняется текущий скрипт. Определяется конфигурацией веб-сервера.
    60.  
    61. HTTP_ACCEPT
    62.  
    63. Содержание заголовка Accept, если он есть.
    64.  
    65. HTTP_ACCEPT_CHARSET
    66.  
    67. Содержание заголовка Accept-Charset, если он есть. Пример: 'iso-8859-1,*,utf-8'.
    68.  
    69. HTTP_ACCEPT_ENCODING
    70.  
    71. Содержание заголовка Accept-Encoding, если он есть. Пример: 'gzip'.
    72.  
    73. HTTP_ACCEPT_LANGUAGE
    74.  
    75. Содержание заголовка Accept-Language, если он есть. Пример: 'en'.
    76.  
    77. HTTP_CONNECTION
    78.  
    79. Содержание заголовка Connection, если он есть. Пример: 'Keep-Alive'.
    80.  
    81. HTTP_HOST
    82.  
    83. Содержание заголовка Host, если он есть.
    84.  
    85. HTTP_REFERER
    86.  
    87. Адрес страницы, которая ссылается на текущий документ посредством пользовательского клиента (программное обеспечение клиента). Не все пользовательские клиенты предоставляют данную информацию, а некоторые из них способны изменять HTTP_REFERER, следовательно, такой информации полностью доверять нельзя.
    88.  
    89. HTTP_USER_AGENT
    90.  
    91. Содержание заголовка 'User-Agent'. Эта строка содержит информацию о пользовательском клиенте (программное обеспечение клиента), который обращается к странице. Типичный пример: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Для получения подобной информации вы также можете использовать функцию get_browser()
    92.  
    93. REMOTE_ADDR
    94.  
    95. IP-адрес удаленного пользователя, который обращается к текущей странице.
    96.  
    97. REMOTE_HOST
    98.  
    99. Имя хоста удаленного пользователя, который обращается к текущей странице. Реверсивный поиск DNS базируется на REMOTE_ADDR удаленного пользователя. Примечание: веб-сервер должен поддерживать создание данной переменной. Например, в Apache опция HostnameLookups должна быть включена в конфигурационном файле httpd.conf (On). Смотрите также: gethostbyaddr()
    100.  
    101. REMOTE_PORT
    102.  
    103. Порт, используемый для соединения с веб-сервером
    104.  
    105. SCRIPT_FILENAME
    106.  
    107. Абсолютный путь для текущего скрипта.
    108.  
    109. SERVER_ADMIN
    110.  
    111. Значение, задаваемое SERVER_ADMIN (для Apache). Определяется директивой конфигурации веб-сервера. Если скрипт исполняется на виртуальном хосте, то значение определяется текущими настройками виртуального хоста веб-сервера.
    112.  
    113. SERVER_PORT
    114.  
    115. Текущий порт веб-сервера, используемы для предечи данных по протоколу HTTP. По-умолчанию '80'.
    116.  
    117. SERVER_SINGATURE
    118.  
    119. Строка, содержащая версию веб-сервера или имя виртуального хоста.
    120.  
    121. PATH_TRANSLATED
    122.  
    123. Базовый путь к текущему сценарию.
    124.  
    125. SCRIPT_NAME
    126.  
    127. Содержит путь и имя файла текущего исполняемого скрипта.
    128.  
    129. REQUEST_URI
    130.  
    131. URI для текущей страницы, например, '/index.html'.
    132.  
    133. PHP_AUTH_DIGEST
    134.  
    135. Если PHP работает как модуль Apache, переменная используется в аутентификации по протоколу HTTP, для проверки подлинности.
    136.  
    137. PHP_AUTH_USER
    138.  
    139. Если PHP работает как модуль Apache, либо как ISAPI IIS, данная переменная содержит имя авторизируемого пользователя при аутентификации по протоколу HTTP.
    140.  
    141. PHP_AUTH_PW
    142.  
    143. Если PHP работает как модуль Apache, либо как ISAPI IIS, данная переменная содержит пароль авторизируемого пользователя при аутентификации по протоколу HTTP.
    144.  
    145. AUTH_TYPE
    146.  
    147. Если PHP работает как модуль Apache, либо как ISAPI IIS, данная переменная содержит тип используемой аутентификации по протоколу HTTP.
    148.  
    149. Переменные окружения $_ENV
    150.  
    151. Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP используйте $HTTP_ENV_VARS.
    152.  
    153. Эти переменные импортируются в глобальное пространство имен PHP, из среды, в которой работает интерпретатор PHP. Число и типы переменных зависят от оболочки, в которой работает PHP, поэтому список этих переменных привести невозможно. Смотрите документацию по оболочке, которую вы используете, чтобы ознакомиться со списком ваших переменных окружения.
    154.  
    155. Некоторые переменные окружения содержатся в переменных CGI, если вы используете PHP как CGI.
    156.  
    157. Переменные окружения $_ENV доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_ENV. На это не влияют даже настойки конфигурации PHP (php.ini).
    158.  
    159. Переменная $HTTP_ENV_VARS содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_ENV_VARS и $_ENV - это различные переменные).
    160.  
    161. HTTP Cookies: $_COOKIE
    162.  
    163. Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP используйте $HTTP_COOKIE_VARS
    164.  
    165. Ассоциативный массив переменных, передаваемый текущему сценарию посредством HTTP Cookies.
    166.  
    167. Переменные HTTP Cookies доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_COOKIE. На это не влияют даже настойки конфигурации PHP (php.ini).
    168.  
    169. Переменная $HTTP_COOKIE_VARS содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_COOKIE_VARS и $_COOKIE - это различные переменные).
    170.  
    171. HTTP GET переменные: $_GET
    172.  
    173. Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP используйте $HTTP_GET_VARS.
    174.  
    175. Ассоциативный массив переменных, передаваемый текущему сценарию посредством HTTP GET запросов.
    176.  
    177. Переменные HTTP GET доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_GET. На это не влияют даже настойки конфигурации PHP (php.ini).
    178.  
    179. Переменная $HTTP_GET_VARS содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_GET_VARS и $_GET - это различные переменные).
    180.  
    181. HTTP POST переменные: $_POST
    182.  
    183. Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP используйте $HTTP_POST_VARS.
    184.  
    185. Ассоциативный массив переменных, передаваемый текущему сценарию посредством HTTP POST запросов.
    186.  
    187. Переменные HTTP POST доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_POST. На это не влияют даже настойки конфигурации PHP (php.ini).
    188.  
    189. Переменная $HTTP_POST_VARS содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_POST_VARS и $_POST - это различные переменные).
    190.  
    191. Переменные File Uploads HTTP: $_FILES
    192.  
    193. Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP используйте $HTTP_POST_FILES.
    194.  
    195. Ассоциативный массив переменных, передаваемый текущему сценарию посредством HTTP POST запросов.
    196.  
    197. Переменные HTTP POST доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_FILES. На это не влияют даже настойки конфигурации PHP (php.ini).
    198.  
    199. Переменная $HTTP_POST_FILES содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_POST_FILES и $_FILES - это различные переменные).
    200.  
    201. Переменные запросов: $_REQUEST
    202.  
    203. Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP не имеет эквивалентов. Начиная с PHP версии 4.3.0 $_REQUEST включает также $_FILES.
    204.  
    205. Ассоциативный массив, содержащий $_GET, $_POST, and $_COOKIE
    206.  
    207. Переменные запросов $_REQUEST доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_REQUEST. На это не влияют даже настойки конфигурации PHP (php.ini).
    208.  
    209. Переменные сессий $_SESSION
    210.  
    211. Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP используйте $HTTP_SESSION_VARS.
    212.  
    213. Ассоциативный массив, содержащий переменные сессий, доступные для текущего скрипта. Для получения дополнительной информации, смотрите функции для работы с сессиями.
    214.  
    215. Переменные сессий доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_SESSION. На это не влияют даже настойки конфигурации PHP (php.ini).
    216.  
    217. Переменная $HTTP_SESSION_VARS содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_SESSION_VARS и $_SESSION - это различные переменные).
    218.  
    219. Глобальные переменные: $GLOBALS
    220.  
    221. Глобальные переменные доступны, начиная с PHP3.
    222.  
    223. Ассоциативный массив, содержащий ссылки на все переменные, которые в настоящее время определены в глобальной области сценария. Имена переменных - ключи массива.
    224.  
    225. Глобальные переменные доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $GLOBALS. На это не влияют даже настойки конфигурации PHP (php.ini).
    226.  
    227. Сообщение последней ошибки PHP сценария: $php_errormsg
    228.  
    229. Переменная $php_errormsg содержит сообщение последней ошибки PHP скрипта.
    230.  
    231. Эта переменная будет доступна только в пределах области, в которой произошла ошибка, и только если опция track_errors конфигурации включена (по умолчанию она отключена).
     
  5. Roman82

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

    С нами с:
    26 ноя 2008
    Сообщения:
    101
    Симпатии:
    0
    это как раз с вариантом $_SERVER у меня и не получилось.

    а с сессией мне вариант не очень нравиться, ведь тогда надо будет дополнительно создавать переменную на каждой странице да потом ее еще и обработать надо.

    может есть что-нибудь еще, ну или как правильно $_SERVER использовать? почему не всегда получается?

    исправлено: пока писал еще сообщение добавили, попробую отпишусь
     
  6. Roman82

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

    С нами с:
    26 ноя 2008
    Сообщения:
    101
    Симпатии:
    0
    Пробовал с помощью $_SERVER['HTTP_REFERER'].
    если ставить echo $_SERVER['HTTP_REFERER'];, то показывает путь к той странице с которой перешел, но вот обратно если писать header ("Location: $_SERVER['HTTP_REFERER']");, то выдает ошибку.
    может написание не правильное?
    или еще какие варианты есть?
     
  7. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    если я правильно понял, у вас на страничках aaa.php и bbb.php есть ссылки на /site/111.php и вы хотите, чтобы при переходе на 111.php у вас выполнялся этот скрипт, но вывод осуществлялся по станичке перехода, так?

    можно сделать например так
    aaa.php
    PHP:
    1. <?php if (isset($_GET['add'] && $_GET['add'] == '111') {
    2. include('111.php');
    3. }
    4. ?>
    5. <p>This is aaa</p>
    6. <p><a href="/site/aaa.php?add=111">go 111</a></p>
    7.  
    bbb.php
    PHP:
    1. <?php if (isset($_GET['add'] && $_GET['add'] == '111') {
    2. include('111.php');
    3. }
    4. ?>
    5. <p>This is bbb</p>
    6. <p><a href="/site/bbb.php?add=111">go 111</a></p>
    7.  
    111.php
    PHP:
    1.  
    2. <p>This is 111</p>
    3.  
     
  8. Roman82

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

    С нами с:
    26 ноя 2008
    Сообщения:
    101
    Симпатии:
    0
    iliavlad, спасибо конечно, но немного не так.
    скрипт 111.php так и выполняется, только потом (после выполения скрипта) происходит возврат на ту же страницу с которой пришел.
    т.е. если я пришел с aaa.php то после выполнения скрипта 111.php меня вернули на страницу aaa.php
    даже если будут создаваться дополнительные страницы с обращением к этому скрипту, то чтобы ничего в скрипте изменять не приходилось, а выкидывало на ту страницу с которой пришел.

    взять к примеру авторизацию: авторизоваться можно ведь с любой страницы, и после авторизации я вернулся бы на ту страницу с которой авторизовался.
     
  9. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    тебе уже подсказали

    HTML:
    1. <form action="111.php?returnurl=currenturl">
    Соответственно после нужных действий в скрипте будет стоять

    Код (Text):
    1. header('Location:' . $_GET['returnurl']);
     
  10. Roman82

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

    С нами с:
    26 ноя 2008
    Сообщения:
    101
    Симпатии:
    0
    Все оказалось гораздо проще, на страницу можно вернуться вот так

    header ("Location: ".$_SERVER['HTTP_REFERER']);

    Всем спасибо за помощь, может кому пригодится.