Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > простая переадресация


Автор: NetJunky 16.1.2009, 16:36
Здравствуйте.
Вот возник вопрос.

У меня на странице регистрации, есть сверху текст, где в идёт оповещение, о том, что если вам не удалось зарегестрироваться, то свяжитесь с админом, где слово админ является ссылкой.
Но я посмотрел, что ссылка такого рода очень не корректна: http://www.test1.ru/pages/contact.php или ../pages/contact.php
И решил сделать с помощью $_REQUEST['show'].

Тоесть по нажатию ссылка будет такой: http://www.test1.ru/index.php?show=contact.
и тогда хотел как-то с помощью $_REQUEST['show'] == contact, перекидывать на ту страницу на которую надо.
Знаю, что это можно на ЯваСкрипт сделать ввиде двух строк, но тем не менее хотел бы узнать, как можно реализовать такое на PHP.

Жду ответа.
Заранее спасибо.

Автор: skyboy 16.1.2009, 17:38
Цитата(NetJunky @  16.1.2009,  15:36 Найти цитируемый пост)
что ссылка такого рода очень не корректна: http://www.test1.ru/pages/contact.php

что значит "очень некорректна"? в твоем понимании? как на меня, нормальная ссылка.
Цитата(NetJunky @  16.1.2009,  15:36 Найти цитируемый пост)
перекидывать на ту страницу на которую надо

"перекидывать"  - это одно. "отдавать определенные данные" - другое.
непонятно, как же у тебя в текущий момент организован сайт. набор HTML-файлов?

Автор: NNaarreekk 16.1.2009, 17:59
Цитата(NetJunky @  16.1.2009,  18:36 Найти цитируемый пост)
$_REQUEST['show'] == contact

Код

if($_REQUEST['show'] == contact)header("Location: http://www.test1.ru/pages/contact.php");

Автор: NetJunky 16.1.2009, 18:29
skyboy, для начала скажу, что ссылка мне кажется не корректной так как указывает напрямую каталог, где файл, что обычно разумно скрывать.
И да мне надо именно, чтобы перекидывало на другую страницу, тоесть если человек пошёл на регистрацию, то не так:
http://www.test1.ru/functions/user_reg.php , а так http://www.test1.ru/index.php?show=user_reg
и на экран ввыодилось содержимое user_reg.php файла, как если бы это был первый вариант ссылки.

NNaarreekk, я так понимаю, что по Вашему предложению получается, что:

что когда у меня получается такой адрес: http://www.test1.ru/index.php?show=contact

Код

   if($_REQUEST['show'] == contact)
      header("Location: http://www.test1.ru/pages/contact.php");

то делать то что выше написано

Но ведь тогда в адресной строке будет http://www.test1.ru/pages/contact.php
и я окажусь там же с чего начал.
Мне надо чтобы, когда ссылка такая http://www.test1.ru/index.php?show=contact, то выводил содержимое, тоесть отобрал бы за место той страницы, где я был, эту http://www.test1.ru/pages/contact.php, но адрес не тот, что щас у меня: http://www.test1.ru/pages/contact.php, а такой http://www.test1.ru/index.php?show=contact

Автор: bars80080 16.1.2009, 18:40
подключай тогда:

Код

if($_REQUEST['show'] == 'contact') include($BasePath."/pages/contact.php");

Автор: NetJunky 16.1.2009, 18:57
bars80080, сделал так:

внутри кода страницы задал так:
Код
<td class='mush1'><a href='".$settings['url']."index.php?page=contact'>Contact</a></td>


выше (там, где ПХП) сделал так:
Код
if($_REQUEST['page'] == 'contact') include($settings['url']."pages/contact.php");


В итоге получил много Warning-ов и результата никакого,
Код
Warning: include() [function.include]: URL file-access is disabled in the server configuration in X:\home\test1.ru\www\layout\header.php on line 48

Warning: include(http://www.test1.ru/pages/contact.php) [function.include]: failed to open stream: no suitable wrapper could be found in X:\home\test1.ru\www\layout\header.php on line 48

Warning: include() [function.include]: Failed opening 'http://www.test1.ru/pages/contact.php' for inclusion (include_path='.;/usr/local/php5/PEAR') in X:\home\test1.ru\www\layout\header.php on line 48



P.S. Вообще-то я поразумевал что-то типо DNS протокола.
На свой сайт можно зайти двумя способами, 1) через IP-адрес хостинга 2) через доменное имя
Так как они связаны.
Вот и тут думал что-то типо этого сделать.
Тоесть если так можно спокойно зайти по ссылке http://www.test1.ru/pages/contact.php и увидеть перед собой, то что задумано, то чтобы переходя по ссылке http://www.test1.ru/index.php?page=contact результат был бы тем же, что и в первом случае.

Автор: bars80080 16.1.2009, 21:39
в include нельзя пихать url, только физический путь к файлу

Автор: NetJunky 16.1.2009, 22:03
bars80080, а что тогда у Вас за $BasePath?
что под этим подразумевается?
этоже не какая-то системная переменная.

Автор: bars80080 16.1.2009, 22:31
что-то вроде $BasePath = $_SERVER['DOCUMENT_ROOT'].'/base_directory';

$_SERVER['DOCUMENT_ROOT'] - корневик твоего сайта

Автор: QaaZ 21.1.2009, 13:56
Я это вот так вот примерно реализовал:

Код

define ("JPATH",dirname(__FILE__));
define( 'DS', DIRECTORY_SEPARATOR );


Код

if (isset($_GET['mod']) && $_GET['mod'] != "")
    {
        if (@!fopen(JPATH.DS.'modules'.DS.$_GET['mod'].DS.$_GET['mod']."_index.php", r))
            {
            header('Location: '.DOMEN.'page404.php');
            }
        else 
            {
            $mod = $_GET['mod'];
            include_once(JPATH.DS.'modules'.DS.$mod.DS.$mod.'_index.php');
            $j3o['$mod']['content'] = JPATH.DS.'modules'.DS.$mod.DS.$mod.'_echo.php';
            $module[modul][menu] = JPATH.DS.'modules'.DS.'menu'.DS.'index.php';    
            }
    } else 
            {
            include_once(JPATH.DS.'modules'.DS.$conf['site']['home'].DS.$conf['site']['home'].'_index.php');
            $mod = $conf['site']['home'];
            $j3o['$mod']['content'] = JPATH.DS.'modules'.DS.$mod.DS.$mod.'_echo.php';
            $module[modul][menu] = JPATH.DS.'modules'.DS.'menu'.DS.'index.php';
            }    

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)