Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Нужна помощь с PHP редиректом (http://forum.oszone.net/showthread.php?t=159824)

blacks2 10-12-2009 23:05 1291976

Нужна помощь с PHP редиректом
 
Доброго времени суток.
Есть redirect.php

Код:

<?php
$id =$_GET['id'];
if ($id == "") {$link = "http://ya.ru";}
if ($id == "1") {$link = "http://www.yahoo.com";}
if ($id == "2") {$link = "http://www.google.com";}
if ($id == "3") {$link = "http://www.webmasterworld.com";}
header('HTTP/1.1 301 Moved Permanently');
header("Location: $link");
exit();
?>

Но! - вроде как он не будет работать при отключенном register_globals (я не спец в php)

В интернете нашел нижеследующие варианты редиректов которые должны работать вместе с register_globals.
Но не знаю как правильно изменить оригинальный код основываясь на функциях из примеров.
Код:

if (isset ($_SERVER["QUERY_STRING"]) && ($_SERVER["QUERY_STRING"] != '')) {
header("Location: $_SERVER["QUERY_STRING"]");
}

Код:

$http =  substr($_SERVER['REQUEST_URI'],strlen('redirect.php?')+1);
//проверка $http по желанию
header("Location: ".$http);

Код:

header("Location: $_SERVER[QUERY_STRING]");

Прошу помощи в решении.
Заранее всем откликнувшимся большое спасибо!


P.S. в 2м примере так и не понял что обозначает "//проверка $http по желанию" - ктонить может подсказать :/

Sham 11-12-2009 00:58 1292078

Цитата:

Цитата blacks2
Прошу помощи в решении. »

решении чего?

Цитата:

Цитата blacks2
не будет работать при отключенном register_globals »

если через $_GET, то будет...
остальной код непонятного смысла.

blacks2 11-12-2009 03:01 1292142

Цитата:

Цитата Sham
если через $_GET, то будет... »

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

Хочу понять где истина: register_globals будет работать с моим скриптом но не с нижеследующим?



redirect.php
Код:

if (isset($_GET["url"]) && $_GET["url"]!='') {
header("Location: $url");
}

Отзыв:
Цитата:

LEOnidUKG, при отключенных register_globals переменная $url в вашем коде будет не пределена.

Sham 11-12-2009 04:53 1292176

Данные запроса регистрируются в виде суперглобальных массивов $_SERVER, $_GET, $_POST и т.д. Если установлен register_globals on, то вдобавок будут определяться соответствующие глобальные переменные согласно установке variables_order в php.ini ($_GET['url'] будет доступен через $url).

в вашем случае все решает строка
Цитата:

Цитата blacks2
$id =$_GET['id']; »

, где $id определена вручную.

Начиная с PHP6 директивы register_globals не существует.

blacks2 11-12-2009 16:37 1292661

Цитата:

Цитата Sham
Начиная с PHP6 директивы register_globals не существует »

Значит получается что $id =$_GET['id']; действовать не будет?

Igor_I 11-12-2009 21:50 1292894

http://docs.php.net/manual/ru/security.globals.php
Цитата:

Цитата blacks2
Значит получается что $id =$_GET['id']; действовать не будет? »

Будет.
Цитата:

Цитата blacks2
Хочу понять где истина: register_globals будет работать с моим скриптом но не с нижеследующим? »

Да. С твоим. но не с нижеследующим.


Время: 12:46.

Время: 12:46.
© OSzone.net 2001-