Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Способы переадресации на другой сайт
 
 автор: Finger   (21.02.2007 в 14:39)   письмо автору
 
 

Извините, что вас опять тревожу... Я уже открывал такую тему и мне дали ответ, но к сожалению я не сохранил его... и вот хотел вернуться в темку почитать, но её почему-то не оказалось... Вот ссылка на прежнюю тему: http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=32898&page=1но там написало: "Ошибка при обращении к теме: 32898" :(((

Я спрашивал вот что:
"Не подскажете каким образом, точнее что писать в php скрипте, чтобы выполнить переадресацию на другой адес сайта. Например ко мне на сайт (http://www.finger.ru) кто-нибуть заходит и его в эту-же секунду переадресовывает на другой сайт (http://www.finger2.ru). Как это сделать? Что нужно прописать в скрипте?

Всего мне ответили три человека (и все предлагали разные варианты). Один из ответов я сохранил:

<?php
  header
("Location: http://www.site.com/");
?>


Вопрос: Какие варианты переадресации ещё могут быть ( они были написаны в той теме ). Пожалуйста ответьте. Очень нужно! Пожайлуста...

   
 
 автор: cheops   (21.02.2007 в 15:41)   письмо автору
 
   для: Finger   (21.02.2007 в 14:39)
 

Можно воспользоваться следующим вариантом
<?php
    
echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=http://www.site.com/'>
          </HEAD></HTML>"
;
?>

   
 
 автор: ZuArt   (21.02.2007 в 16:15)   письмо автору
 
   для: cheops   (21.02.2007 в 15:41)
 

а можно еще и вот так - в файле .htaccess


RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain1.ru$ [NC]
RewriteRule (.*) http://www.domain2.ru/%{REQUEST_URI} [P]

   
 
 автор: Finger   (21.02.2007 в 16:33)   письмо автору
 
   для: ZuArt   (21.02.2007 в 16:15)
 

ZuArt, cheops спасибо большое, но там был ещё один способ (он мне как раз и нужен). Подскажите кто-нибуть пожалуйста ещё способы. Очень сильно нужно. Заранее благодарен.

   
 
 автор: ZuArt   (21.02.2007 в 16:37)   письмо автору
 
   для: Finger   (21.02.2007 в 16:33)
 

ну еще можно скриптом...

<?
echo "<script>location=\"www.domain2.ru\";</script>";
?>

   
 
 автор: Finger   (21.02.2007 в 17:00)   письмо автору
 
   для: ZuArt   (21.02.2007 в 16:37)
 

ZuArt, нет... это тоже не то... в той теме мне другой вариант написали... Буду очень сильно благодарен тому человеку, кто напишет ещё варианты.

З.Ы. - а куда делась та темка? Её восстановить никак нельзя?

   
 
 автор: Finger   (21.02.2007 в 18:01)   письмо автору
 
   для: Finger   (21.02.2007 в 17:00)
 

Так ладно... расскажу лучше почему все приведённые способы не подходят в моём случае. Имеется код (так как ничего не понимаю в php, выкладываю его весь) :


?>

<? 
function check($str){ 
   
$str=ereg_Replace("(<([^>])*>|>|<)","",$str); 
   
$str=str_replace("|",'&#124;',$str);
   
$str=str_replace("`",'&#096;',$str); 
   
$str=str_replace("'",'&#039;',$str); 
   
$str=str_replace('"','&quot;',$str); 

   
$str=str_replace("\r",'',$str); 
   
$str=str_replace("\n",'<br>',$str); 
   return (
$str);
}
if (@
$warn) {unset($warn);}
$filename $DOCUMENT_ROOT.$_GET['htm'].'.csv';
require(
"setings.php") ;
if (@
$add) { 
   if (empty(
$_POST['name']) or empty($_POST['mess'])) {
    
$warn="Не заполнены обязательные поля!";
   }else{
    
$warn="";
    if(
strlen($_POST['name']) > $maxlen
    {
       
$name=substr(check($_POST['name']),0,$maxlen);
       
$warn="Слишком длинное имя. Сократите до $maxlen символов! ";
    }else{
       
$name=check($_POST['name']);
    }
    if(
strlen($_POST['mail']) > $maxlen)
    {
       
$mail=substr(check($_POST['mail']),0,$maxlen);
       
$warn="Слишком длинное имя. Сократите до $maxlen символов! ";
    }elseif(
$mail and ! eregi("([0-9a-z\.-_]+)@([0-9a-z\.-_]+)\.([a-z]{2,}) *$",$_POST['mail'])){
       
$warn.="Таких электронных адресов не бывает! ";
    }else{
       
$mail=check($_POST['mail']);
    }

    if(
strlen($_POST['url']) > $maxlen)
    {
       
$url=substr(check($_POST['url']),0,$maxlen);
       
$warn.="Слишком длинный адрес. Сократите до $maxlen символов!";
    }else{
       
$url=check($_POST['url']);
    }
    if(
strlen($_POST['city']) > $maxlen)
    {
       
$city=substr(check($_POST['city']),0,$maxlen);
       
$warn.="Слишком длинное название города. Сократите до $maxlen символов!";
    }else{
    }
    if(
strlen($_POST['mess']) > $maxlenMes)
    {
       
$mess=substr(check($_POST['mess']),0,$maxlenMes);
       
$warn.="Слишком длинное сообщение. Сократите до $maxlenMes символов!";
    }else{
       
$mess=check($_POST['mess']);
    }
   }
   if (empty(
$warn)) { 
    
$f=fopen($filename,"a") or die("Не могу открыть файл на запись!");
    
flock($f,LOCK_EX); 
    
fwrite($f"$name|$mail|$url|$city|".time()."|$mess\r\n");
    
fflush($f); 
    
flock($f,LOCK_UN); 
    
fclose($f); 
    }


/////////////////////////////////////////////////////// !!! ВНИМАНИЕ !!! //////////////////////////////////////////////////////////////////////

!!! ВОТ В ЭТО МЕСТО МНЕ НУЖНО ВСТАВИТЬ КОД ПЕРЕАДРЕСАЦИИ !!!
                                            
ПОДСКАЖИТЕ КАКОЙ???

/////////////////////////////////////////////////////// !!! ВНИМАНИЕ !!! //////////////////////////////////////////////////////////////////////

}
?>
<html><!-- Создаем оформление страницы  (эта часть работает если кнопка «добавить» не нажата или после ее нажатия добавить сообщение не удалось)-->
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<META http-equiv="Expires" content="Mon, 26 Jul 1997 05:00:00 GMT">
<META http-equiv="Cache-Control" content="no-cache, must-revalidate">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Last-Modified" content="<?=gmdate("D, d M Y H:i:s");?>">
<META NAME="ROBOTS" CONTENT="noindex, nofollow"> <!--Запретим индексацию -->
<meta name="Description "content="">
<meta name="Keywords" content="">
<style type="text/css">
.p {color:#222222; font-size:11px; font-family:Verdana, Tahoma}
</style>
</head>

<body>
<center>
<div>

<?
if (@$adet==1): 
   echo 
"<P style='color:green'>Ваше сообщение добавлено</p>";
elseif (@
$warn): 
   echo 
"<P style='color:white'>$warn</p>";
else: 
   






echo 
"<B style='color:red'>Мини-чат:</B>";



endif;
?>

<P>&nbsp;</p>

<!-- Скрипт, отображающий данные из файла -->
<?
function datestring($date){ 
    
$monstring=array("января""февраля""марта""апреля""мая""июня""июля""августа""сентября""октября""ноября""декабря");
    
$m=$monstring[$date['mon']-1];

    
$daystring=array("в воскресенье""в понедельник""во вторник""в среду""в четверг""в пятницу""в субботу");
    
$d=$daystring[$date['wday']];

    if(
strlen($date['minutes'])==1)
      { 
// добавим ноль перед числом, если оно меньше 10
      
$min="0".$date['minutes'];
    }else{
      
$min=$date['minutes'];
    }
    return 
"$d, ".$date['mday'].$m ".$date['year']." года, в ".$date['hours']." ч. $min мин.";
}

if (
is_readable($filename)) { // если файл читается
  
$f fopen($filename,"r") or die("Ошибка открытия базы"); 
  for(
$i=0$data=fgets($f$maxlen*5+$maxlenMes); $i++) 
  {
     @
$totlines++ ;
  }
  unset(
$i);
  
fclose($f);

  if (!isset(
$totlines)) {$totlines=0;}
  
$int=round(($totlines)/$maxlines); 
  if (
$int*$maxlines $totlines):
    
$pages=$int+1;
  else:
    
$pages=$int;
  endif;
  if(@
$page || @$page $pages) {$page=$pages;} /
  
  for (
$link=1;$link<=$pages;$link++) 
  {
    if (
$link!=$page)
       {
       @
$linesesis.="<a href=".$_SERVER["SCRIPT_NAME"]."?page=$link&htm=$htm>[$link]</a>";
       }
    if (
$link==$page)
       {
       @
$linesesis.=$link ";
       }
  }


  
$to=$page*$maxlines-$maxlines;// от
  
$from=$page*$maxlines// до
  
if ($from $totlines) {$from=$totlines;}

  
$f fopen($filename,"r") or die("Ошибка открытия базы"); 
  for(
$i=0$i $from$i++) 
  {
     
$data=fgetcsv($f$maxlen*4+$maxlenMes"|"); 
     if (
$i >= $to
     {
         list(
$nametext$mailtext$urltext$citytext$timetext$messtext) = $data// перебросим массив в переменные (можно было бы обращаться к элементам массива как $data[1], $data[2] и т. д., но удобней по именам)
    
echo
  
"
  <P>&nbsp;</p>
  <table border=1 width=90% cellpadding=2 cellspacing=1 bgcolor=#CCCCCC class=p>
  <tr><td align=center bgcolor=#e8e8ff><b>
$nametext</b> ($citytext)</td></tr>
  <tr><td bgcolor=#FFFFFF>
$messtext</td></tr>
  <tr><td align=right >Сообщение "
.($i+1).", написано ".datestring(getdate($timetext))."</td></tr>
  </table>
  <P>&nbsp;</p>
  "
;

    
     }
  }
  unset(
$i);
  
fclose($f); 
}
?>
<!-- Создаем форму, определив, какие данные нас интересуют -->
<form action=<?echo $_SERVER["SCRIPT_NAME"]."?page=".@$pages."&htm=".@$htm;?> name="frm" method=post>
<table border=2 width=366px>
<tr><td align=right class=p>Ваше имя:<input class=p type=text SIZE=39 MAXLENGTH=<?=@$maxlen;?> name=name value="<?=@$name;?>"></td></tr>
<tr><td align=left class=p valign=top>Текст сообщения (Не более <?=@$maxlenMes;?> символов):<br><textarea class=p name=mess rows=19 COLS=54><?=@$mess;?></textarea></td></tr>
<tr><td class=p colspan=2><input class=p type=submit value=Отправить name=add id=b> </td></tr>
</table>
</form>
<P>&nbsp;</p>


<?php
echo "<b>Страницы</b> $linesesis";
?>


В нём нужно заменить данный текст на код переадресации:



/////////////////////////////////////////////////////// !!! ВНИМАНИЕ !!! //////////////////////////////////////////////////////////////////////

!!! ВОТ В ЭТО МЕСТО МНЕ НУЖНО ВСТАВИТЬ КОД ПЕРЕАДРЕСАЦИИ !!!
                                            
ПОДСКАЖИТЕ КАКОЙ???

/////////////////////////////////////////////////////// !!! ВНИМАНИЕ !!! //////////////////////////////////////////////////////////////////////


Почему-то все вышеперечисленные способы не подходят. Когда я ввожу их в код, появляется ошибка. А в другой теме (которая куда-то пропала) был такой код переадресации, при котором ошибка не появлялась и переадресация работала нормально.

Люди добрые, подскажите пожалуйста, как сделать переадресацию в том месте. Очень вас прошу... помогите!

   
 
 автор: Finger   (21.02.2007 в 19:29)   письмо автору
 
   для: Finger   (21.02.2007 в 18:01)
 

ну помогите кто-нибуть

   
 
 автор: Finger   (21.02.2007 в 20:06)   письмо автору
 
   для: Finger   (21.02.2007 в 19:29)
 

Что никто не знает? Мне нужно быстрее. Ну пожалуйста ответьте.

   
 
 автор: Poison   (21.02.2007 в 20:13)   письмо автору
 
   для: Finger   (21.02.2007 в 20:06)
 

А что за ошибка появляесть когда вводишь header(location)?

   
 
 автор: Finger   (21.02.2007 в 20:31)   письмо автору
 
   для: Poison   (21.02.2007 в 20:13)
 

Poison, появляется ошибка следующего содержания:


Warning: Cannot modify header information - headers already sent by (output started at z:\home\aser.homeip.net\www\hlmonitor\index.php:8) in z:\home\aser.homeip.net\www\hlmonitor\index.php on line 309

   
 
 автор: AlMag   (21.02.2007 в 21:17)   письмо автору
 
   для: Finger   (21.02.2007 в 20:31)
 

Есть ли у Вас в файле settings.php какой-то вывод в браузер?

   
 
 автор: Finger   (21.02.2007 в 21:57)   письмо автору
 
   для: AlMag   (21.02.2007 в 21:17)
 

AlMag, вот содержание файла settings.php (с комментариями):

<?
$maxlines
=10// количество сообщений на странице (требуется только для comment.php)
$maxlen=35;   // длина полей имени, названия города и т. п.
$maxlenMes=1000;// длина сообщения
?>

   
 
 автор: ZuArt   (22.02.2007 в 10:15)   письмо автору
 
   для: Finger   (21.02.2007 в 21:57)
 

хмммм... я еще могу понять ошибку при функции header(), но через указанный выше скрипт (echo "<script>location=\"www.domain2.ru\";</script>") - НИКАКИХ ошибок не будет, т.к. это простой вывод а перенаправление сделает сам браузер...

   
 
 автор: Trianon   (22.02.2007 в 10:19)   письмо автору
 
   для: ZuArt   (22.02.2007 в 10:15)
 

Не сделает.
Точнее, сделает, но несколько не туда.

   
 
 автор: ZuArt   (22.02.2007 в 10:45)   письмо автору
 
   для: Trianon   (22.02.2007 в 10:19)
 

не понял =)
а куда тогда, если не секрет ;) ?

   
 
 автор: Trianon   (22.02.2007 в 11:18)   письмо автору
 
   для: ZuArt   (22.02.2007 в 10:45)
 

на файл с именем www.domain2, и расширением .ru, лежащий в том же каталоге, что и текущая страница.

   
 
 автор: ZuArt   (22.02.2007 в 12:24)   письмо автору
 
   для: Trianon   (22.02.2007 в 11:18)
 

о... точняк... надоть http://www.domain2.ru =) согласен...

   
 
 автор: NovikovMA   (22.02.2007 в 02:38)   письмо автору
 
   для: Finger   (21.02.2007 в 18:01)
 

Уберите в начале файла

?> 

Со всеми пробелами и переносами каретки.
Должно помочь.
И вставьте код переадресации

<?php 
  header
("Location: http://www.site.com/"); 
?>

За пределами тэгов <? и ?> не должно быть ни одного символа до строчки header('');

   
 
 автор: Finger   (22.02.2007 в 13:02)   письмо автору
 
   для: NovikovMA   (22.02.2007 в 02:38)
 

Всем огромное спасибо за внимание! Вопрос решён, просто в файле php.ini нужно было поставить значение output_buffering on

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования