Здравствуйте! Скажите, можно ли сделать так, чтобы после обращения к скрипту происходил возврат на туже страницу с которой было обращение? К примету есть скрипт 1.php и к этому скрипту идет обращение с нескольких страниц, как сделать так чтобы скрипт возвращал на ту же страницу с которой было обращение к этому скрипту? Если это возможно то подскажите как это осуществить? Смотрел разный материал, но так у меня и не получилось это сделать. Спасибо!
$_SERVER['HTTP_REFERER'] либо пробовать явой хистори попробуй в исполняемый скрипт сослать адресс родителя типа $_SERVER['SCRIPT_NAME'] PHP: Суперглобальные переменные PHP Серверные переменные $_SERVER Примечание: Впервые появилась в PHP версии 4.1.0. В более ранних версиях используется переменная $HTTP_SERVER_VARS. $_SERVER - это суперглобальный массив, содержащий такую информацию, как заголовки, пути, размещение скриптов. Данный массив создается веб-сервером. Нет никиких гарантий, что веб-сервер снабдит данный суперглобальный массив всей предопределенной информацией. За детельной информацией по переменным, содержащихся в данном суперглобальном массиве, обратитесь к спецификации CGI 1.1. Суперглобальные переменные доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_SERVER. На это не влияют даже настойки конфигурации PHP (php.ini). Переменная $HTTP_SERVER_VARS содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_SERVER_VARS и $_SERVER - это различные переменные). Вы можете не найти некоторый переменные, которые могут содержаться в массиве $_SERVER, если вы запускаете PHP из коммандной строки. PHP_SELF Имя файла в настоящее время выполняющегося сценария, относительно корня документа. Например, $_SERVER ['PHP_SELF'] в сценарии при адресе [url=http://example.com/test.php/foo.bar]http://example.com/test.php/foo.bar[/url] возвращает /test.php/foo.bar. Предопределенная константа __FILE__ содержит полный путь и имя файла. Если PHP выполняется из командной строки, эта переменная содержит имя сценария (доступно, начиная с PHP 4.3.0). argv Массив параметров, переданных сценарию. При использовании метода GET, он будет содержать строку запроса. argc Содержит номер параметров командной строки, переданных сценарию (если они переданы из командной строки). GATEWAY_INTERFACE Содержит версию CGI, которую использует веб-сервер (Например, CGI/1.1). SERVER_NAME Имя веб-сервера, под которым текущий скрипт выполняется. Если скрипт исполняется на виртуальном веб-сервере, переменная будет содержать имя веб-сервера, которое было определено для виртуального веб-сервера. SERVER_SOFTWARE Идентификационная строка веб-сервера, которая передается через заголовки при ответах на запросы сервера. SERVER_PROTOCOL Имя и версия используемого протокола HTTP (Например, HTTP/1.1). REQUEST_METHOD Используемый метод запроса веб-страницы ( 'GET', 'HEAD', 'POST', 'PUT' ). REQUEST_TIME Время начала запроса веб-страницы. Доступна, начиная с PHP 5.1.0 QUERY_STRING Строка запроса веб-страницы, если она существует, через которую был получен доступ к странице. DOCUMENT_ROOT Корневая директория, под которой выполняется текущий скрипт. Определяется конфигурацией веб-сервера. HTTP_ACCEPT Содержание заголовка Accept, если он есть. HTTP_ACCEPT_CHARSET Содержание заголовка Accept-Charset, если он есть. Пример: 'iso-8859-1,*,utf-8'. HTTP_ACCEPT_ENCODING Содержание заголовка Accept-Encoding, если он есть. Пример: 'gzip'. HTTP_ACCEPT_LANGUAGE Содержание заголовка Accept-Language, если он есть. Пример: 'en'. HTTP_CONNECTION Содержание заголовка Connection, если он есть. Пример: 'Keep-Alive'. HTTP_HOST Содержание заголовка Host, если он есть. HTTP_REFERER Адрес страницы, которая ссылается на текущий документ посредством пользовательского клиента (программное обеспечение клиента). Не все пользовательские клиенты предоставляют данную информацию, а некоторые из них способны изменять HTTP_REFERER, следовательно, такой информации полностью доверять нельзя. HTTP_USER_AGENT Содержание заголовка 'User-Agent'. Эта строка содержит информацию о пользовательском клиенте (программное обеспечение клиента), который обращается к странице. Типичный пример: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Для получения подобной информации вы также можете использовать функцию get_browser() REMOTE_ADDR IP-адрес удаленного пользователя, который обращается к текущей странице. REMOTE_HOST Имя хоста удаленного пользователя, который обращается к текущей странице. Реверсивный поиск DNS базируется на REMOTE_ADDR удаленного пользователя. Примечание: веб-сервер должен поддерживать создание данной переменной. Например, в Apache опция HostnameLookups должна быть включена в конфигурационном файле httpd.conf (On). Смотрите также: gethostbyaddr() REMOTE_PORT Порт, используемый для соединения с веб-сервером SCRIPT_FILENAME Абсолютный путь для текущего скрипта. SERVER_ADMIN Значение, задаваемое SERVER_ADMIN (для Apache). Определяется директивой конфигурации веб-сервера. Если скрипт исполняется на виртуальном хосте, то значение определяется текущими настройками виртуального хоста веб-сервера. SERVER_PORT Текущий порт веб-сервера, используемы для предечи данных по протоколу HTTP. По-умолчанию '80'. SERVER_SINGATURE Строка, содержащая версию веб-сервера или имя виртуального хоста. PATH_TRANSLATED Базовый путь к текущему сценарию. SCRIPT_NAME Содержит путь и имя файла текущего исполняемого скрипта. REQUEST_URI URI для текущей страницы, например, '/index.html'. PHP_AUTH_DIGEST Если PHP работает как модуль Apache, переменная используется в аутентификации по протоколу HTTP, для проверки подлинности. PHP_AUTH_USER Если PHP работает как модуль Apache, либо как ISAPI IIS, данная переменная содержит имя авторизируемого пользователя при аутентификации по протоколу HTTP. PHP_AUTH_PW Если PHP работает как модуль Apache, либо как ISAPI IIS, данная переменная содержит пароль авторизируемого пользователя при аутентификации по протоколу HTTP. AUTH_TYPE Если PHP работает как модуль Apache, либо как ISAPI IIS, данная переменная содержит тип используемой аутентификации по протоколу HTTP. Переменные окружения $_ENV Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP используйте $HTTP_ENV_VARS. Эти переменные импортируются в глобальное пространство имен PHP, из среды, в которой работает интерпретатор PHP. Число и типы переменных зависят от оболочки, в которой работает PHP, поэтому список этих переменных привести невозможно. Смотрите документацию по оболочке, которую вы используете, чтобы ознакомиться со списком ваших переменных окружения. Некоторые переменные окружения содержатся в переменных CGI, если вы используете PHP как CGI. Переменные окружения $_ENV доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_ENV. На это не влияют даже настойки конфигурации PHP (php.ini). Переменная $HTTP_ENV_VARS содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_ENV_VARS и $_ENV - это различные переменные). HTTP Cookies: $_COOKIE Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP используйте $HTTP_COOKIE_VARS Ассоциативный массив переменных, передаваемый текущему сценарию посредством HTTP Cookies. Переменные HTTP Cookies доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_COOKIE. На это не влияют даже настойки конфигурации PHP (php.ini). Переменная $HTTP_COOKIE_VARS содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_COOKIE_VARS и $_COOKIE - это различные переменные). HTTP GET переменные: $_GET Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP используйте $HTTP_GET_VARS. Ассоциативный массив переменных, передаваемый текущему сценарию посредством HTTP GET запросов. Переменные HTTP GET доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_GET. На это не влияют даже настойки конфигурации PHP (php.ini). Переменная $HTTP_GET_VARS содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_GET_VARS и $_GET - это различные переменные). HTTP POST переменные: $_POST Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP используйте $HTTP_POST_VARS. Ассоциативный массив переменных, передаваемый текущему сценарию посредством HTTP POST запросов. Переменные HTTP POST доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_POST. На это не влияют даже настойки конфигурации PHP (php.ini). Переменная $HTTP_POST_VARS содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_POST_VARS и $_POST - это различные переменные). Переменные File Uploads HTTP: $_FILES Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP используйте $HTTP_POST_FILES. Ассоциативный массив переменных, передаваемый текущему сценарию посредством HTTP POST запросов. Переменные HTTP POST доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_FILES. На это не влияют даже настойки конфигурации PHP (php.ini). Переменная $HTTP_POST_FILES содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_POST_FILES и $_FILES - это различные переменные). Переменные запросов: $_REQUEST Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP не имеет эквивалентов. Начиная с PHP версии 4.3.0 $_REQUEST включает также $_FILES. Ассоциативный массив, содержащий $_GET, $_POST, and $_COOKIE Переменные запросов $_REQUEST доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_REQUEST. На это не влияют даже настойки конфигурации PHP (php.ini). Переменные сессий $_SESSION Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP используйте $HTTP_SESSION_VARS. Ассоциативный массив, содержащий переменные сессий, доступные для текущего скрипта. Для получения дополнительной информации, смотрите функции для работы с сессиями. Переменные сессий доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $_SESSION. На это не влияют даже настойки конфигурации PHP (php.ini). Переменная $HTTP_SESSION_VARS содержит ту же самую начальную информацию, но она не является автоглобальной переменной. (Заметьте, что $HTTP_SESSION_VARS и $_SESSION - это различные переменные). Глобальные переменные: $GLOBALS Глобальные переменные доступны, начиная с PHP3. Ассоциативный массив, содержащий ссылки на все переменные, которые в настоящее время определены в глобальной области сценария. Имена переменных - ключи массива. Глобальные переменные доступны внутри пользовательских функций. То есть вам не нужно объявлять суперглобальные переменные глобальными внутри пользовательских функций, делая что-то вроде этого: global $GLOBALS. На это не влияют даже настойки конфигурации PHP (php.ini). Сообщение последней ошибки PHP сценария: $php_errormsg Переменная $php_errormsg содержит сообщение последней ошибки PHP скрипта. Эта переменная будет доступна только в пределах области, в которой произошла ошибка, и только если опция track_errors конфигурации включена (по умолчанию она отключена).
это как раз с вариантом $_SERVER у меня и не получилось. а с сессией мне вариант не очень нравиться, ведь тогда надо будет дополнительно создавать переменную на каждой странице да потом ее еще и обработать надо. может есть что-нибудь еще, ну или как правильно $_SERVER использовать? почему не всегда получается? исправлено: пока писал еще сообщение добавили, попробую отпишусь
Пробовал с помощью $_SERVER['HTTP_REFERER']. если ставить echo $_SERVER['HTTP_REFERER'];, то показывает путь к той странице с которой перешел, но вот обратно если писать header ("Location: $_SERVER['HTTP_REFERER']");, то выдает ошибку. может написание не правильное? или еще какие варианты есть?
если я правильно понял, у вас на страничках aaa.php и bbb.php есть ссылки на /site/111.php и вы хотите, чтобы при переходе на 111.php у вас выполнялся этот скрипт, но вывод осуществлялся по станичке перехода, так? можно сделать например так aaa.php PHP: <?php if (isset($_GET['add'] && $_GET['add'] == '111') { include('111.php'); } ?> <p>This is aaa</p> <p><a href="/site/aaa.php?add=111">go 111</a></p> bbb.php PHP: <?php if (isset($_GET['add'] && $_GET['add'] == '111') { include('111.php'); } ?> <p>This is bbb</p> <p><a href="/site/bbb.php?add=111">go 111</a></p> 111.php PHP: <p>This is 111</p>
iliavlad, спасибо конечно, но немного не так. скрипт 111.php так и выполняется, только потом (после выполения скрипта) происходит возврат на ту же страницу с которой пришел. т.е. если я пришел с aaa.php то после выполнения скрипта 111.php меня вернули на страницу aaa.php даже если будут создаваться дополнительные страницы с обращением к этому скрипту, то чтобы ничего в скрипте изменять не приходилось, а выкидывало на ту страницу с которой пришел. взять к примеру авторизацию: авторизоваться можно ведь с любой страницы, и после авторизации я вернулся бы на ту страницу с которой авторизовался.
тебе уже подсказали HTML: <form action="111.php?returnurl=currenturl"> Соответственно после нужных действий в скрипте будет стоять Код (Text): header('Location:' . $_GET['returnurl']);
Все оказалось гораздо проще, на страницу можно вернуться вот так header ("Location: ".$_SERVER['HTTP_REFERER']); Всем спасибо за помощь, может кому пригодится.