редирект в php

Статус
В этой теме нельзя размещать новые ответы.

ufaclub

Полезный
Регистрация
1 Май 2007
Сообщения
395
Реакции
19
PHP:
/* Отправка сообщения */
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
      if ($verify == 'true')
      {
       echo "Сообщение отправлено!";
      }
      else 
	  {
	  echo "Сообщение не отправлено!";
	  }
  }

как сделать чтоб после етого сообшения был редирект на главную сайта?
 
С задержкой:
PHP:
$URL="http://www.google.com";
header("Refresh: 3; URL=$URL");
echo "Через 3 сек. вы будете перенаправлены на главную страницу.";
Без задержки:
PHP:
$URL="http://www.google.com";
header ("Location: $URL");
 
PHP:
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
      if ($verify == 'true')
      {

       echo
       $URL="http://www.google.com";
       header ("Location: $URL");  
      }
      else 
      {
      echo "Сообщение не отправлено!";
      }
  }


так не работает((
 
PHP:
 echo
       $URL="http://www.google.com";
       header ("Location: $URL");

1. что вы пытаетесь в данном случае вывести на экран?
2. весь вывод должен выполнятся после отправки заголовка, как это показано в примере выше.
 
заголовок header должен быть ДО вывода чего угодно в браузер
т.е. любые echo, print и тп - только ПОСЛЕ header

в случае с хэадер - сообщение не будет выведено, если вы хотите, что бы редирект был ПОСЛЕ вывода сообщения,
то это, например, так будет выглядеть

PHP:
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");

$URL="http://www.google.com";
echo("<meta http-equiv=\"REFRESH\" content=\"1; URL='$URL'\">");

      if ($verify == 'true')
      {
       echo "Сообщение отправлено!";
      }
      else 
      {
      echo "Сообщение не отправлено!";
      }

теперь сначала будет выведено сообщение, а потом будет редирект на целевую страницу
 
Код:
  /**
   * Перенаправление
   * @param string URL
   * @param integer Задержка в сек
   * @param mixed Тип заголовок или мета
   */
  function redirect($url,$time=0,$type='header') {
    switch($type):
      case 'meta':
        echo'<meta http-equiv="refresh" content="'.$time.'; URL='.$url.'" >';
        break;
      case 'location':
        header("Request-URI: $url");
        header("Content-Location: $url");
        header("Location: $url");
        header("Location: url=".$url);
        break;
      case 'refresh':
      default:
        if(headers_sent()):
          echo"<script>document.location.href='$url';</script>\n";
        else:
          header("Request-URI: $url");
          header("Content-Location: $url");
          header("Refresh: ".$time." url=".$url);
        endif;
        exit();
        break;
      endswitch;
  }
то как у меня работает годами))
 
заголовок header должен быть ДО вывода чего угодно в браузер
т.е. любые echo, print и тп - только ПОСЛЕ header
в случае с хэадер - сообщение не будет выведено, если вы хотите, что бы редирект был ПОСЛЕ вывода сообщения,
то это, например, так будет выглядеть
PHP:
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
$URL="http://www.google.com";
echo("<meta http-equiv=\"REFRESH\" content=\"1; URL='$URL'\">");
      if ($verify == 'true')
      {
       echo "Сообщение отправлено!";
      }
      else 
      {
      echo "Сообщение не отправлено!";
      }
теперь сначала будет выведено сообщение, а потом будет редирект на целевую страницу


вот то что надо было.. спасибо
 
Можно просто юзать буферезацию вывода ob_start(), чтоб не возникало проблем с отправкой заголовков после какого либо вывода. :)
 
Насчёт ob_start - тормозов добавится.
Насчёт header - иногда нету никакого вывода с пом. функций вывода, а header всё равно не шлётся. Нюанс в ряде идущих открывающих/закрывающих тегов php.
Т.е.
PHP:
<?php
...some code
?>

<?php
...some more code
?>
дадут вывод.
Нужно:
PHP:
<?php
...some code
?>
<?php
...some more code
?>
 
Что за бред?
у вас скрипты не в кодировке с BOM
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху