[help]редирект с переменными

saylar_06

Создатель
Регистрация
7 Мар 2009
Сообщения
42
Реакции
0
Здарсте, буду краток... Возможно вопрос и глупый но ничего толкового я не нашел :(

Собственно: Как перенаправить пользователя с одной страницы на другую и дать ему в придачу ещё и переменную?

к примеру он попал на страничку и получил там $message = "ERROR"; и его перенаправило на другую страничку где будет условие

if (isset($message)) echo $message;

ну в общем суть в том чтоб перенаправить пользователя с переменной без разницы с какой главное чтоб потом с ней работать можно было...
 
Здарсте, буду краток... Возможно вопрос и глупый но ничего толкового я не нашел :(
Собственно: Как перенаправить пользователя с одной страницы на другую и дать ему в придачу ещё и переменную?
к примеру он попал на страничку и получил там $message = "ERROR"; и его перенаправило на другую страничку где будет условие
if (isset($message)) echo $message;
ну в общем суть в том чтоб перенаправить пользователя с переменной без разницы с какой главное чтоб потом с ней работать можно было...
например с помощью ссессий:
1 файл:
PHP:
session_start();
$message = "ERROR";
$_SESSION['message'] = $message;
header("Location: 2_file.php");
2 файл:
PHP:
session_start();
$message = $_SESSION['message'];
echo $message;

так же можно это сделать с помощью кук, или даже воспользоваться get-передачей данных;)
 
если влоб, как-то так ... но решение явно не лучшее
PHP:
$url = "xxx.ru/index.php?data=123" //  какой-то url

if (isset($message)) {
 echo $message;
$url .= "&message=$message";
}
header("Location: $url");

Добавлено через 6 минут
Dj_StelS разве будет верным хранить в сессии всякого рода "системных" сообщений?

я почему-то всегда считал что сессию нужно использовать по минимуму, и не хранить там кучи текста ... особенно если необходимость данной переменной ограничивается лишь несколькоми страницами ( в том смысле, что на 1 странице сохранится а на 2-3 сотрется )
 
если влоб, как-то так ... но решение явно не лучшее
PHP:
$url = "xxx.ru/index.php?data=123" //  какой-то url
if (isset($message)) {
 echo $message;
$url .= "&message=$message";
}
header("Location: $url");
Добавлено через 6 минут
Dj_StelS разве будет верным хранить в сессии всякого рода "системных" сообщений?
я почему-то всегда считал что сессию нужно использовать по минимуму, и не хранить там кучи текста ... особенно если необходимость данной переменной ограничивается лишь несколькоми страницами ( в том смысле, что на 1 странице сохранится а на 2-3 сотрется )
разве сессии создают нагрузку? разве что только тем что создают файл на сервере с сессией. Но если это пугает, можно использовать куки, но их как и get данные можно поменять...
Так что я думаю это дело выбора каждого...
 
как выше сказали можно использовать сессии, куки, гет запросы. Вообще если это обычное сообщение предупреждение, которое впринципе не несёт никакой полезной нагрузки кроме сообщения об ошибке пользователю, то использовал бы куки. Но тут косяк в том что у некоторых могут куки быть отключены, тогда самым универсальным будет сессия.
Есть еще вариант с БД, тут тоже ничего сложного, проверять таблицу mesage(например) в которой такие столбцы: sess_id, msg. Думаю тут всё понятно.
 
Простите что здесь, немного не по теме топика но точно в тему:
я совсем начинающий =)

как сделать так
есть ссылка типа _http://мойдомен.ру/go.php?home
что надо написать в файле go.php что:
если переменная равна home то идем на майкрософт.ком
если переменная 123 то на другой сайт и т.д.

вобщем чтобы переходил по адресу в зависимости от переменной.

спасибо!
 
keyto

заходим на go.php?home=значение
PHP:
// файл go.php
    if( !isset($_GET['home'])) {
      echo "ERROR";
      exit;
    }

    $url = "";
    switch($_GET['home'])
    {
        case "123":  $url = "site.ru";    break;
        case "333":  $url = "site.com";   break;
        default: $url = "google.com"; 
    }
   header('Location: $url');
или так
PHP:
    if( !isset($_GET['home'])) {
      echo "ERROR";
      exit;
    }
   $urlArray = array( 
                    "123" => "site.ru",
                    "333" => 'site.com',
                    "444" => '132123.ru'
                    );   
   if(isset($urlArray[$_GET['home']])) {
       header("Location: ".$urlArray[$_GET['home']]);
   }
или как-то так
PHP:
    if( !isset($_GET['home'])) {
      echo "ERROR";
      exit;
    }
    
    $value = $_GET['home'];
    
    if($value == 'qwe'){
        header("Location: http://google.com");
    }elseif($value == 'xxxx'){
        header("Location: http://mail.ru");
    }else {
        header("Location: http://ya.ru");
    }
 
по первому примеру было бы отлично, легко добавлять все. но он что то не работает =(
ошибка
Warning: Cannot modify header information - headers already sent by.... выдает ошибку на строку header('Location: $url');

во втором примере тоже на строку header("Location: ".$urlArray[$_GET['home']]); грешит.
что то в ней не так. может надо что то другое использовать а не header?

-------

почитал доки. - у меня как раз случай - установлен редирект уже.
можно ли сделать это не через Header ?
 
Перед вызовом header нельзя ничего отдавать браузеру.


Добавлено через 1 минуту
А если хочешь без header то тут javascript или meta.
 
Назад
Сверху