За последние 24 часа нас посетил 19331 программист и 1607 роботов. Сейчас ищут 964 программиста ...

Не может изменить информацию заголовка.

Тема в разделе "PHP для новичков", создана пользователем BFF, 14 янв 2009.

  1. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Првиет всем!!

    Только начал локально эксплуатировать PHP
    Стоит Апач2, PHP 5, MySQL.
    Все работает штатно.

    В index.php выполняется код...


    Код (Text):
    1.  
    2. // Редирект с параметром
    3.  function redirect( $par )
    4.   {
    5.     header( "Location: index.php?task=" . $par );
    6.    exit;
    7.   }
    на что PHP ругается:
    Предупреждение: Не может изменить информацию заголовка - заголовки, уже посланные (вывод, начатый в C:\Program Files\Apache Group\Apache2\htdocs\oow\index.php:7) в C:\Program Files\Apache Group\Apache2\htdocs\oow\index.php на строке 40

    Понятно, что не может поменять заголовок уже присланный, но вопрос... а чо делать?
    Как передернуть свою же страницу с параметрами?
     
  2. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    аааааааааааааааааааааааааааааа


    функция header() должна быть до любого вывода в браузер

    P.S. Админам: предлагаю наряду с разделами "Программирование на PHP" и "Программирование на PHP для новичков" создать раздел "Программирование на PHP для слепых, глухонемых и тех, кто капитан подводной лодки" и переместить туда все подобные темы
     
  3. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Поверил.
    Не верно.

    Один и тот же файл на внешнем хосте заголовки передергивает.
    На локальном компе:
    Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\oow\index_bff.php:7) in C:\Program Files\Apache Group\Apache2\htdocs\oow\index_bff.php on line 40

    Хотя и там и там он сначала рисует примитивную таблицу и форму входа....
     
  4. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
     
  5. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Хорошо, стартовал оттуда то.... в данном случае с винта. И что?
    Получается, что при работе на локальной машине ни как не удастся перезапустить этот же файл с параметрами?
    Но это же неправильно, вернее если бы было настолько большое ограничение, то просто куча кода не работало бы.
    Вероятнее всего, что то необходимо изменить в системе, что?



    ....... усталость и тупость )))
     
  6. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    Вы дровосек или прикидываетесь? =)
     
  7. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Я не понимаю проблемы. Считай дерево. Выдели время, объясни дереву. Или переадресуй туда, где разжевали. Опыт PHP исключительно лично наживной. Все лбом. Как и сейчас. Вместо траты времени объясните плиз что делать. Или скажите - здесь ты не сможешь передать в файл параметры. Ну не верю я в это, а как сделать не понимаю.
     
  8. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    пхп пишет, что в 7ой строчке начат вывод в браузер, а функция header() должна быть до любого! в браузер

    выложи свой код тогда уж и там посмотрим
     
  9. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Вот это я причесываю:


    Код (Text):
    1.  
    2. <html>
    3. <head>
    4. <title></title>
    5. <link type="text/css" rel="StyleSheet" href="http://s24.ucoz.net/src/css/551.css" />
    6. </head>
    7. <body style="background:url('http://s24.ucoz.net/t/551/1.gif') #FFFFFF; margin:0px; padding:0px;">
    8. <?php
    9.  // Функция получения IP пользователя
    10.  function get_ip()
    11.   {
    12.    if ($ip = getenv("HTTP_CLIENT_IP"))
    13.     {  return $ip;  }
    14.  
    15.    if ($ip = getenv("HTTP_X_FORWARDED_FOR"))
    16.     {
    17.      if ($ip == '' || $ip == "unknown")
    18.       {  $ip = getenv("REMOTE_ADDR");  }
    19.  
    20.      return $ip;
    21.     }
    22.    if ( $ip = getenv("REMOTE_ADDR") )
    23.     {  return $ip;  }
    24.   }
    25.  // Вычисляе хэш безопасности
    26.  function u_hash( $user , $user_agent , $user_ip , $tm )
    27.   {   return md5( $user ) . md5( $user_agent ) . md5( $user_ip ) . md5( $tm );  }
    28.  // Получаем текущее время с учетом дробных частей секунды
    29.  function getmicrotime()
    30.   {
    31.    $mt = explode( " ", microtime() );
    32.    return ( (float)$mt[0] + (float)$mt[1] );
    33.   }
    34.  // Редирект с параметром
    35.  function redirect( $par )
    36.   {
    37.    header( "Location: index.php?task=" . $par );
    38.    exit;
    39.   }
    40.  // Продление сессии (проверка, что пользователь - авторизован)
    41.  function check()
    42.   {
    43.    // Ищем пользователя с именем, указанным в куках
    44.    $result = mysql_query( "SELECT `*` FROM `auth_members` WHERE `u_mail` = '" . mysql_escape_string( $_COOKIE['u_mail'] ) . "' LIMIT 1" );
    45.  
    46.    // Еслии пользователя с таким именем нет, делаем редирект
    47.    if( mysql_num_rows( $result ) == 0 )
    48.     {
    49.      setcookie( "time" , "" , time() - 900 , "/" );
    50.      setcookie( "u_mail" , "" , time() - 900 , "/" );
    51.  
    52.      redirect( "not_auth" );
    53.     }
    54.  
    55.    // Парсим полученную запись.
    56.    global $user;
    57.    $user = mysql_fetch_object( $result );
    58.  
    59.    // Количсетво минут для жизни сессии
    60.    $minutes = 15;
    61.    // Ищем, есть ли активная сессия
    62.    $result = mysql_query( "SELECT `*` FROM `auth_sessions` WHERE `member` = " . $user -> id . " AND `u_hash` = '" . u_hash( $user -> u_mail , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "' AND `time` > " . ( time() - ( $minutes * 60 ) ) . " LIMIT 1 " );
    63.  
    64.    // Если нету активной сессии, перекидываем на форму авторизации
    65.    if( mysql_num_rows( $result ) == 0 )
    66.     {
    67.      setcookie( "time" , "" , time() - 900 , "/" );
    68.      setcookie( "u_mail" , "" , time() - 900 , "/" );
    69.  
    70.      redirect( "not_auth" );
    71.     }
    72.  
    73.    // Если авторизированный пользователь хочет выйти
    74.    if( isset( $_GET['quit'] ) )
    75.     {
    76.      // Удаляем запись о сессии пользователя
    77.      mysql_query( "DELETE FROM `auth_session` WHERE `id` = " . $user -> id . " AND `u_hash` = '" . u_hash( $user -> u_mail , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "'" );
    78.  
    79.      // чищаем куки и устанавливаем время жизни в прошлом
    80.      setcookie( "time" , "" , time() - 900 , "/" );
    81.      setcookie( "u_mail" , "" , time() - 900 , "/" );
    82.  
    83.      // Возвращаем значение "Ложь"
    84.      return FALSE;
    85.     }
    86.    // Иначе, т.е. если пользователь не хочет выходить
    87.    else
    88.     {
    89.      // Обновляем время последней активности пользователя на текущее.
    90.      mysql_query( "UPDATE `auth_session` SET `time` = " . time() . " WHERE `member` = " . $user -> id . " AND `u_hash` = '" . u_hash( $user -> u_mail , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "'" );
    91.  
    92.      // Продлеваем время жизни кук
    93.      setcookie( "time" , $_COOKIE['time'] , time() + ( $minutes * 60 ) , "/" );
    94.      setcookie( "u_mail" , $_COOKIE['u_mail'] , time() + ( $minutes * 60 ) , "/" );
    95.  
    96.      // Возвращаем значение "Истина"
    97.      return TRUE;
    98.     }
    99.   }
    100.  // Функция авторизации
    101.  function auth()
    102.   {
    103.    // Ищем пользователя с именем, указанным в куках
    104.    $result = mysql_query( "SELECT `*` FROM `auth_members` WHERE `u_mail` = '" . mysql_escape_string( $_POST['u_mail'] ) . "' AND `password` = '" . md5( $_POST['pass'] ) . "' LIMIT 1" );
    105.  
    106.    // Еслии пользователя с таким именем нет, делаем редирект
    107.    if( mysql_num_rows( $result ) == 0 )
    108.     {  redirect( "not_auth" );  }
    109.  
    110.    // Парсим полученную запись.
    111.    $user = mysql_fetch_object( $result );
    112.  
    113.    // Получаем текущее время с учетом дробных частей секунды
    114.    $tm = getmicrotime();
    115.    // Вставляем запись в таблицу с сессиями.
    116.    mysql_query( "INSERT INTO `auth_sessions` VALUES( " . $user -> id . " , " . time() . " , '" . u_hash( $user -> u_mail , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $tm ) . "' )" );
    117.  
    118.    // Ставим пользователю куки с его логинов и уникальным временем авторизации. Время жизни кук - 15 минут
    119.    setcookie( "time" , $tm , time() + 900 , "/" );
    120.    setcookie( "u_mail" , $user -> u_mail , time() + 900 , "/" );
    121.  
    122.    // делам редирект без параметра, т.к. никаких ошибок не было
    123.    redirect( "" );
    124.   }
    125.  // Функция регистрации
    126.  function reg()
    127.   {
    128.    // Ищем пользователя с именем, указанным в форме регистрации
    129.    $result = mysql_query( "SELECT `*` FROM `auth_members` WHERE `u_mail` = '" . mysql_escape_string( $_POST['u_mail'] ) . "' LIMIT 1" );
    130.  
    131.    // Если пользователь найден, делаем редиркт
    132.    if( mysql_num_rows( $result ) == 1 )
    133.     {  redirect( "exists" );  }
    134.  
    135.    // Иначе, регистрируем пользователя
    136.    mysql_query( "INSERT INTO `auth_members` VALUES ( '' , '" . mysql_escape_string( $_POST['u_mail'] ) . "' , '" . md5( $_POST['pass1'] ) . "' )" );
    137.    $_POST['pass'] = $_POST['pass1'];
    138.  
    139.    // Делаем как бы автоматическую авторизацию после регисрации.
    140.    auth();
    141.   }
    142.  // Соединение с MySQL
    143. {
    144.          $host = "localhost";
    145.          $port = "3306";
    146.          $user = "root";
    147.          $pass = "111111111";
    148.          $dbnm = "oow";
    149.  
    150.          $h = ( empty( $post ) ) ? $host : $host . ":" . $port;
    151.  
    152.          $db = mysql_connect( $h , $user , $pass );
    153.  
    154.          if( !$db )   // Если соединиться не удалось:
    155.           {
    156.            print ("Datebase connection failed.");
    157.            exit();
    158.           }
    159.  
    160.          if( ! mysql_select_db( $dbnm ) )
    161.           {
    162.            print ("Datebase select failed.");
    163.            exit();
    164.           }
    165. }
    166. // Проверка куков на наличие пользователя.
    167. // пока не делаем.
    168.  
    169. // Если нажата кнопка с именем blogin (Авторизация)
    170.  if( $_SERVER['REQUEST_METHOD'] == "POST" && isset( $_POST['blogin'] ) )
    171.   {
    172.    // Если поле логина или пароля пустое - делаем редирект
    173.    if( empty( $_POST['u_mail'] ) || empty( $_POST['pass'] ) )
    174.     {  redirect( "login" );  }
    175.    // В протовном случае переходим к авторизации
    176.    auth();
    177.   }
    178.  
    179.  // Если нажата кнопка с именем breg (Регистрация)
    180.  if( $_SERVER['REQUEST_METHOD'] == "POST" && isset( $_POST['breg'] ) )
    181.   {
    182.    // Если поле логина или пароля или его подтверждения - пусты делаем редирект
    183.    if( empty( $_POST['u_mail'] ) || empty( $_POST['pass1'] ) || empty( $_POST['pass2'] ) )
    184.     {  redirect( "fields" );  }
    185. //Состав мыла,
    186. //Формат тел,
    187.    // Если введенные пароли не совпадают - делаем редирект
    188.    if( md5( $_POST['pass1'] ) != md5( $_POST['pass2'] ) )
    189.     {  redirect( "nepass" );  }
    190.  
    191.    // Иначе переходим к функции регистрации
    192.    reg();
    193.   }
    194.  
    195.  // Если у поьзователя стоят куки и функция check() скажет что пользователь залогинен
    196.  if( isset( $_COOKIE['time'] ) && isset( $_COOKIE['u_mail'] ) && check() == TRUE )
    197.   {  print "Welcome.<br><a href='?quit'>Выйти</a>";  }
    198.  // иначе
    199.  else
    200.   {
    201.    // Если была ошибка, выводим соответствующее сообщение
    202.      switch( $_GET['task'] )
    203.       {
    204.        case "":    $err_mes="все ок"; print $err_mes;
    205.             break;
    206.        case "login":    $err_mes="Укажите e-mail и пароль."; print $err_mes;
    207.             break;
    208.        case "nepass":   $err_mes="Пароли не совпадают";      print $err_mes;
    209.             break;
    210.        case "not_auth": $err_mes="Логин или пароль неверный.";              print $err_mes;
    211.             break;
    212.        case "fields":   $err_mes="Не заполнены все поля";print $err_mes;
    213.             break;
    214.        case "exists":   $err_mes="Пользователь с таким именем уже существует";print $err_mes;
    215.             break;
    216.      print "<br><br>";
    217.     }
    218.    // И показываем форму
    219.  
    220. ?>
    221.  
    222. <!-- Вывод наружу -->
    223. <table style="background:url('http://s24.ucoz.net/t/551/1.gif') #FFFFFF; margin:0px; padding:0px;" align="center" border="0" cellpadding="0" cellspacing="0" width="95%">
    224.     <tr>
    225.         <td style="border-left:0px solid #9D9CAD; ">&nbsp;</td><td align="center" height="20">Оптимизация личной работы</td><td style="border-right:0px solid #9D9CAD;">&nbsp;</td>
    226.     </tr> </table>
    227.  
    228. <table align="center" border="0" cellpadding="0" cellspacing="0" width="98%">
    229.     <tr>
    230.         <td width="20" height="20"><img src="http://s24.ucoz.net/t/551/16.gif" border="0"></td><td style="border-top:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td><td width="20" height="20"><img src="http://s24.ucoz.net/t/551/17.gif" border="0"></td>
    231.     </tr>
    232.     <tr>
    233.         <td style="border-left:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td><td height="560" style="background:#FFFFFF;">
    234. <!-- Тело экрана -->
    235. <? if( $_GET['task']=="" or $_GET['task']=="login"  )
    236. {
    237. ?>
    238.     <table align="center" border="0" cellpadding="0" cellspacing="0" width="98%">
    239.         <tr>
    240.             <td valign="top" align="left" width="50%" height="240" style="background:#FFFFFF;"> <FONT FACE="Courier New" SIZE="+1" COLOR="#000000">Существует 2 параметра.........</FONT></td>
    241.                 <td style="border-left:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td>
    242.             <td valign="bottom" align="right" width="30%" height="240" style="background:#FFFFFF;"> <? print $err_mes;?><br><br> Вход:<br><br>  <form action='' method='POST'>  E-mail : <input type='text' name='u_mail' maxlength='150' value=''><br>Пароль: <input type='text' name='pass' maxlength='150' value=''><br><input type='Submit' name='blogin' value='Вход'><br></form></td>
    243.                 <td style="border-right:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td>
    244.                     <TH align="centr" ROWSPAN=2 width="160" height="480" style="background:#FFFFFF;">
    245.                     <!-- временно гасим рекламу
    246.                     <script type="text/javascript"><!--
    247.                     google_ad_client = "pub-6025044686488160";
    248.                     /* 160x600, BFF главный */
    249.                     google_ad_slot = "1563170255";
    250.                     google_ad_width = 160;
    251.                     google_ad_height = 600;
    252.  
    253.                     </script>
    254.                     <script type="text/javascript"
    255.                     src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    256.                     </script>
    257.                     -->
    258.                     </TH>
    259.         </tr>
    260.  
    261.         <tr>
    262.             <td align="right" valign="bottom" width="50%" height="240" style="background:#FFFFFF;">Нажимая клавишу ВХОД..........</td>
    263.                 <td style="border-left:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td>
    264.             <td align="right" valign="top" width="30%" height="240" style="background:#FFFFFF;"><br><br><a href="http://........reg.php" title="Регистрация">Регистрация.</a>&nbsp;&nbsp;&nbsp;<a href="mailto:call89155227227@gmail.com" title="В разработке">Восстановить пароль.</a></td><td style="border-right:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td>
    265.         </tr>
    266.  
    267.     </table>
    268.  
    269. <?
    270. }
    271. ?>
    272. <!-- /Тело экрана -->
    273.         </td>
    274.         <td style="border-right:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td></tr>
    275.     <tr>
    276.         <td width="20" height="20"><img src="http://s24.ucoz.net/t/551/18.gif" border="0"></td><td style="border-bottom:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td><td width="20" height="20"><img src="http://s24.ucoz.net/t/551/19.gif" border="0"></td>
    277.     </tr>
    278. </table>
    279. <!-- Нижний заголовок -->
    280. <table style="background:url('http://s24.ucoz.net/t/551/1.gif') #FFFFFF; margin:0px; padding:0px;" align="center" border="0" cellpadding="0" cellspacing="0" width="95%">
    281.     <tr>
    282.         <td style="border-left:0px solid #9D9CAD; ">&nbsp;</td><td align="center" height="20"><a href="http://.........." title="www.oow.at.ua">........a </a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="mailto:call89155227227@gmail.com" title="Администратор"> call89155227227@gmail.com</a></td><td style="border-right:0px solid #9D9CAD;">&nbsp;</td>
    283.     </tr>
    284. </table>
    285.  
    286. <?php
    287.   }
    288.  
    289. ?>
    290. </body>
    291. </html>

    После старта коннект с БД. Выходит форма входа.
    При вводе пустых параметров форма входа проверяется на пустоту и надо передернуть файл с сообщением о том что необходимо ввести параметры. Попытка генерирования хеадера не удается.
    Прошу прощения, что подчеркиваю еще раз.
    Когда этот файл работает на внешнем хостинге, все катит.
    При разработке на локально машине выходит указанный трабл.
     
  10. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    все обращения к функции redirect() должны идти до этого куска
    HTML:
    1. <html>
    2. <head>
    3. <link type="text/css" rel="StyleSheet" href="http://s24.ucoz.net/src/css/551.css" />
    4. </head>
    5. <body style="background:url('http://s24.ucoz.net/t/551/1.gif') #FFFFFF; margin:0px; padding:0px;">
     
  11. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Как идею я понимаю, что до 7 строки, но по сути 7 строка это начало PHP кода, как я могу вызвать ранее?????
    Здесь проблема в локальном компе. Т.е. если на внешнем компе код делает заголовок http://p...../forum/viewtopic.php?t=16233 и PHP его успешно съедает, то здесь тот же код по какой то причине не может сгенерить заголовок, хотя когда в браузере подсовываешь его вручную все работает.... т.е. PHP заголовок обрабатывает нормально, но вот причину по которой он не хочет его генерить на локальной машине не понимаю. Вернее вопрос в том, что нужно чтоб он смог его генерить....
     
  12. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    такого не бывает

    что ты хочешь, объясни на пальцах
     
  13. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Выполняется страница http:\\127.0.0.1\work.php
    в процессе работы код фиксирует ошибку NO_DATA
    я хочу чтобы сам код сгенерил заголовок http:\\127.0.0.1\work.php?task=NO_DATA
    закончил работу.

    затем заголовок запускает work.php с параметром task равным NO_DATA и продолжается обработка данных....

    Понятно объяснил?
     
  14. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
  15. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    покажи, в каком именно месте код фиксирует ошибку NO_DATA

    и кстати, я до сих пор не могу понять, как это катит на хостинге
    ссылку можешь дать, где стоит счас именно этот скрипт и там все работает?
     
  16. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Описание о работе общее ошибка NO_DATA придумана.
    Формируется вот тут

    Код (Text):
    1. // Если нажата кнопка с именем blogin (Авторизация)
    2.  if( $_SERVER['REQUEST_METHOD'] == "POST" && isset( $_POST['blogin'] ) )
    3.   {
    4.    // Если поле логина или пароля пустое - делаем редирект
    5.    if( empty( $_POST['u_mail'] ) || empty( $_POST['pass'] ) )
    6.     {  redirect( "login" );  }
    7.    // В протовном случае переходим к авторизации
    8.    auth();
    9.   }
    Вызывая редирект запускается код:

    Код (Text):
    1.  function redirect( $par )
    2.   {
    3.    header( "Location: index.php?task=" . $par );
    4.    exit;
    5.   }
    в результате которого, насколько я понимаю должен быть сгенерирован новый заголовок ///////index.php?task=login
    и страница перезапускается.

    Вот ссылка где работает.

    http://bff.serpuxov.net/oow/index.php

    т.е. давим ввод не заполнив фому входа. скрипт проверяет что поля пусты и передергивает страницу передав ей ошибку fields помоему
    В верху выводится результат обработки этой ошибки.[/code]
     
  17. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    интересное инфо:

    http://otvety.google.ru/otvety/thread?t ... b3560d464d

    действительно, говорится о том, что неадер нельзя строить после вывода в браузер. Но я не понимаю.... я же на экран выбросил кучу всего, значит все, кирдык, header() нельзя использовать? А типа на внешнем хосте можно. Что то не так.
     
  18. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    странно как-то работает на удаленном хостинге сервер
    заголовки не должны посылаться после вывода в браузер =)
    нет времени подробно изучать скрипт, возможно помогу позже
    но мне кажется, что-то странное с внешним хостингом =)
     
  19. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    повтор уже....

    http://www.geeklog.net/faqman/index.php?op=view&t=38

    снова говорят о лишних символах.

    Смотришь сам файл, в конце действительно 3 невидимых символа.
    Это мтадата UTF-8
    Стираешь, портится кодировка (ну и с ней....) но проблема все равно остается.

    Так что переходим на 15 января с нерешенным вопросом....
    ...думай голова.

    (действительно до вызова реадер был вывод принтом... убрал, пофигу...)
     
  20. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Делаю на основе вот этого:

    http://forum.vingrad.ru/faq/topic-158301.html

    толково, легко пишет хозяин....
    есть ошибки, но правятся....
    начал на внешнем хосте...
    перешал на локальную машину, а тут трабл.....
    но мне так понравилась эта схема.
    Надо что то придумать.
    Спасибо.
    До завтра.
     
  21. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Классная статья - http://phpfaq.ru/headers

    завтра дожму!!!!
    ===============
    Завтра наступило)))
    Всем привет!

    Действительно, в указанной выше статье, все расписано очень понятно.
    Т.е. другой причины не бывает, насколько я понял. Однако ни куда не продвинулся с тех пор.
    Постараюсь объяснить как понимаю сам.
    т.е. берем за аксиому, что если хоть один байт был передан сервером браузеру, то заголовок уже формировался т.к. он должен был предшествовать передаваемым данным. т.е. после этого второй раз формировать заголовок технически нельзя (притиворечит протоклу HTTP) )
    Снова привожу полный листинг т.к. внес изменения, убрал заголовки и некоторые бекграунды.

    Код (Text):
    1. <html>
    2. <?php
    3.  // Функция получения IP пользователя
    4.  function get_ip()
    5.   {
    6.    if ($ip = getenv("HTTP_CLIENT_IP"))
    7.     {  return $ip;  }
    8.  
    9.    if ($ip = getenv("HTTP_X_FORWARDED_FOR"))
    10.     {
    11.      if ($ip == '' || $ip == "unknown")
    12.       {  $ip = getenv("REMOTE_ADDR");  }
    13.  
    14.      return $ip;
    15.     }
    16.    if ( $ip = getenv("REMOTE_ADDR") )
    17.     {  return $ip;  }
    18.   }
    19.  // Вычисляе хэш безопасности
    20.  function u_hash( $user , $user_agent , $user_ip , $tm )
    21.   {   return md5( $user ) . md5( $user_agent ) . md5( $user_ip ) . md5( $tm );  }
    22.  // Получаем текущее время с учетом дробных частей секунды
    23.  function getmicrotime()
    24.   {
    25.    $mt = explode( " ", microtime() );
    26.    return ( (float)$mt[0] + (float)$mt[1] );
    27.   }
    28.  // Редирект с параметром
    29.   function redirect( $par )
    30.   {
    31.    header( "Location: index.php?task=" . $par );
    32.    exit;
    33.   }
    34.  // Продление сессии (проверка, что пользователь - авторизован)
    35.  function check()
    36.   {
    37.    // Ищем пользователя с именем, указанным в куках
    38.    $result = mysql_query( "SELECT `*` FROM `auth_members` WHERE `u_mail` = '" . mysql_escape_string( $_COOKIE['u_mail'] ) . "' LIMIT 1" );
    39.  
    40.    // Еслии пользователя с таким именем нет, делаем редирект
    41.    if( mysql_num_rows( $result ) == 0 )
    42.     {
    43.      setcookie( "time" , "" , time() - 900 , "/" );
    44.      setcookie( "u_mail" , "" , time() - 900 , "/" );
    45.  
    46.      redirect( "not_auth" );
    47.     }
    48.  
    49.    // Парсим полученную запись.
    50.    global $user;
    51.    $user = mysql_fetch_object( $result );
    52.  
    53.    // Количсетво минут для жизни сессии
    54.    $minutes = 15;
    55.    // Ищем, есть ли активная сессия
    56.    $result = mysql_query( "SELECT `*` FROM `auth_sessions` WHERE `member` = " . $user -> id . " AND `u_hash` = '" . u_hash( $user -> u_mail , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "' AND `time` > " . ( time() - ( $minutes * 60 ) ) . " LIMIT 1 " );
    57.  
    58.    // Если нету активной сессии, перекидываем на форму авторизации
    59.    if( mysql_num_rows( $result ) == 0 )
    60.     {
    61.      setcookie( "time" , "" , time() - 900 , "/" );
    62.      setcookie( "u_mail" , "" , time() - 900 , "/" );
    63.  
    64.      redirect( "not_auth" );
    65.     }
    66.  
    67.    // Если авторизированный пользователь хочет выйти
    68.    if( isset( $_GET['quit'] ) )
    69.     {
    70.      // Удаляем запись о сессии пользователя
    71.      mysql_query( "DELETE FROM `auth_session` WHERE `id` = " . $user -> id . " AND `u_hash` = '" . u_hash( $user -> u_mail , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "'" );
    72.  
    73.      // чищаем куки и устанавливаем время жизни в прошлом
    74.      setcookie( "time" , "" , time() - 900 , "/" );
    75.      setcookie( "u_mail" , "" , time() - 900 , "/" );
    76.  
    77.      // Возвращаем значение "Ложь"
    78.      return FALSE;
    79.     }
    80.    // Иначе, т.е. если пользователь не хочет выходить
    81.    else
    82.     {
    83.      // Обновляем время последней активности пользователя на текущее.
    84.      mysql_query( "UPDATE `auth_session` SET `time` = " . time() . " WHERE `member` = " . $user -> id . " AND `u_hash` = '" . u_hash( $user -> u_mail , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "'" );
    85.  
    86.      // Продлеваем время жизни кук
    87.      setcookie( "time" , $_COOKIE['time'] , time() + ( $minutes * 60 ) , "/" );
    88.      setcookie( "u_mail" , $_COOKIE['u_mail'] , time() + ( $minutes * 60 ) , "/" );
    89.  
    90.      // Возвращаем значение "Истина"
    91.      return TRUE;
    92.     }
    93.   }
    94.  // Функция авторизации
    95.  function auth()
    96.   {
    97.    // Ищем пользователя с именем, указанным в куках
    98.    $result = mysql_query( "SELECT `*` FROM `auth_members` WHERE `u_mail` = '" . mysql_escape_string( $_POST['u_mail'] ) . "' AND `password` = '" . md5( $_POST['pass'] ) . "' LIMIT 1" );
    99.  
    100.    // Еслии пользователя с таким именем нет, делаем редирект
    101.    if( mysql_num_rows( $result ) == 0 )
    102.     {  redirect( "not_auth" );  }
    103.  
    104.    // Парсим полученную запись.
    105.    $user = mysql_fetch_object( $result );
    106.  
    107.    // Получаем текущее время с учетом дробных частей секунды
    108.    $tm = getmicrotime();
    109.    // Вставляем запись в таблицу с сессиями.
    110.    mysql_query( "INSERT INTO `auth_sessions` VALUES( " . $user -> id . " , " . time() . " , '" . u_hash( $user -> u_mail , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $tm ) . "' )" );
    111.  
    112.    // Ставим пользователю куки с его логинов и уникальным временем авторизации. Время жизни кук - 15 минут
    113.    setcookie( "time" , $tm , time() + 900 , "/" );
    114.    setcookie( "u_mail" , $user -> u_mail , time() + 900 , "/" );
    115.  
    116.    // делам редирект без параметра, т.к. никаких ошибок не было
    117.    redirect( "" );
    118.   }
    119.  // Функция регистрации
    120.  function reg()
    121.   {
    122.    // Ищем пользователя с именем, указанным в форме регистрации
    123.    $result = mysql_query( "SELECT `*` FROM `auth_members` WHERE `u_mail` = '" . mysql_escape_string( $_POST['u_mail'] ) . "' LIMIT 1" );
    124.  
    125.    // Если пользователь найден, делаем редиркт
    126.    if( mysql_num_rows( $result ) == 1 )
    127.     {  redirect( "exists" );  }
    128.  
    129.    // Иначе, регистрируем пользователя
    130.    mysql_query( "INSERT INTO `auth_members` VALUES ( '' , '" . mysql_escape_string( $_POST['u_mail'] ) . "' , '" . md5( $_POST['pass1'] ) . "' )" );
    131.    $_POST['pass'] = $_POST['pass1'];
    132.  
    133.    // Делаем как бы автоматическую авторизацию после регисрации.
    134.    auth();
    135.   }
    136.  // Соединение с MySQL
    137. {
    138.          $host = "localhost";
    139.          $port = "3306";
    140.          $user = "root";
    141.          $pass = "111111111";
    142.          $dbnm = "oow";
    143.  
    144.          $h = ( empty( $post ) ) ? $host : $host . ":" . $port;
    145.  
    146.          $db = mysql_connect( $h , $user , $pass );
    147.  
    148.          if( !$db )   // Если соединиться не удалось:
    149.           {
    150.            print ("Datebase connection failed.");
    151.            exit();
    152.           }
    153.  
    154.          if( ! mysql_select_db( $dbnm ) )
    155.           {
    156.            print ("Datebase select failed.");
    157.            exit();
    158.           }
    159. }
    160. // Проверка куков на наличие пользователя.
    161. // пока не делаем.
    162.  
    163. // Если нажата кнопка с именем blogin (Авторизация)
    164.  if( $_SERVER['REQUEST_METHOD'] == "POST" && isset( $_POST['blogin'] ) )
    165.   {
    166.    // Если поле логина или пароля пустое - делаем редирект
    167.    if( empty( $_POST['u_mail'] ) || empty( $_POST['pass'] ) )
    168.     {  redirect( "login" );  }
    169.    // В протовном случае переходим к авторизации
    170.    auth();
    171.   }
    172.  
    173.  // Если нажата кнопка с именем breg (Регистрация)
    174.  if( $_SERVER['REQUEST_METHOD'] == "POST" && isset( $_POST['breg'] ) )
    175.   {
    176.    // Если поле логина или пароля или его подтверждения - пусты делаем редирект
    177.    if( empty( $_POST['u_mail'] ) || empty( $_POST['pass1'] ) || empty( $_POST['pass2'] ) )
    178.     {  redirect( "fields" );  }
    179. //Состав мыла,
    180. //Формат тел,
    181.    // Если введенные пароли не совпадают - делаем редирект
    182.    if( md5( $_POST['pass1'] ) != md5( $_POST['pass2'] ) )
    183.     {  redirect( "nepass" );  }
    184.  
    185.    // Иначе переходим к функции регистрации
    186.    reg();
    187.   }
    188.  
    189.  // Если у поьзователя стоят куки и функция check() скажет что пользователь залогинен
    190.  if( isset( $_COOKIE['time'] ) && isset( $_COOKIE['u_mail'] ) && check() == TRUE )
    191.   {  print "Welcome.<br><a href='?quit'>Выйти</a>";  }
    192.  // иначе
    193.  else
    194.   {
    195.    // Если была ошибка, выводим соответствующее сообщение
    196.      switch( $_GET['task'] )
    197.       {
    198.      //  case "1":    $err_mes="все ок"; print $err_mes;
    199.        //     break;
    200.        case "login":    $err_mes="Укажите e-mail и пароль."; print $err_mes;
    201.             break;
    202.        case "nepass":   $err_mes="Пароли не совпадают";      print $err_mes;
    203.             break;
    204.        case "not_auth": $err_mes="Логин или пароль неверный.";              print $err_mes;
    205.             break;
    206.        case "fields":   $err_mes="Не заполнены все поля";print $err_mes;
    207.             break;
    208.        case "exists":   $err_mes="Пользователь с таким именем уже существует";print $err_mes;
    209.             break;
    210.      print "<br><br>";
    211.     }
    212.    // И показываем форму
    213.  
    214. ?>
    215.  
    216. <!-- Вывод наружу -->
    217. <table style="background:url('http://s24.ucoz.net/t/551/1.gif') #FFFFFF; margin:0px; padding:0px;" align="center" border="0" cellpadding="0" cellspacing="0" width="95%">
    218.     <tr>
    219.         <td style="border-left:0px solid #9D9CAD; ">&nbsp;</td><td align="center" height="20">заголовок</td><td style="border-right:0px solid #9D9CAD;">&nbsp;</td>
    220.     </tr> </table>
    221.  
    222. <table align="center" border="0" cellpadding="0" cellspacing="0" width="98%">
    223.     <tr>
    224.         <td width="20" height="20"><img src="http://s24.ucoz.net/t/551/16.gif" border="0"></td><td style="border-top:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td><td width="20" height="20"><img src="http://s24.ucoz.net/t/551/17.gif" border="0"></td>
    225.     </tr>
    226.     <tr>
    227.         <td style="border-left:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td><td height="560" style="background:#FFFFFF;">
    228. <!-- Тело экрана -->
    229. <? if( $_GET['task']=="" or $_GET['task']=="login"  )
    230. {
    231. ?>
    232.     <table align="center" border="0" cellpadding="0" cellspacing="0" width="98%">
    233.         <tr>
    234.             <td valign="top" align="left" width="50%" height="240" style="background:#FFFFFF;"> <FONT FACE="Courier New" SIZE="+1" COLOR="#000000">..........распределить их исполнение.</FONT></td>
    235.                 <td style="border-left:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td>
    236.             <td valign="bottom" align="right" width="30%" height="240" style="background:#FFFFFF;"> <? print $err_mes;?><br><br> Вход:<br><br>  <form action='' method='POST'>  E-mail : <input type='text' name='u_mail' maxlength='150' value=''><br>Пароль: <input type='text' name='pass' maxlength='150' value=''><br><input type='Submit' name='blogin' value='Вход'><br></form></td>
    237.                 <td style="border-right:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td>
    238.                     <TH align="centr" ROWSPAN=2 width="160" height="480" style="background:#FFFFFF;">
    239.                     <!-- временно гасим рекламу
    240.                     <script type="text/javascript"><!--
    241.                     google_ad_client = "pub-6025044686488160";
    242.                     /* 160x600, BFF главный */
    243.                     google_ad_slot = "1563170255";
    244.                     google_ad_width = 160;
    245.                     google_ad_height = 600;
    246.  
    247.                     </script>
    248.                     <script type="text/javascript"
    249.                     src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    250.                     </script>
    251.                     -->
    252.                     </TH>
    253.         </tr>
    254.  
    255.         <tr>
    256.             <td align="right" valign="bottom" width="50%" height="240" style="background:#FFFFFF;">................администратору.</td>
    257.                 <td style="border-left:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td>
    258.             <td align="right" valign="top" width="30%" height="240" style="background:#FFFFFF;"><br><br><a href="http://bff.serpuxov.net/oow/reg.php" title="Регистрация">Регистрация.</a>&nbsp;&nbsp;&nbsp;<a href="mailto:call89155227227@gmail.com" title="В разработке">Восстановить пароль.</a></td><td style="border-right:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td>
    259.         </tr>
    260.  
    261.     </table>
    262.  
    263. <?
    264. }
    265. ?>
    266. <!-- /Тело экрана -->
    267.         </td>
    268.         <td style="border-right:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td></tr>
    269.     <tr>
    270.         <td width="20" height="20"><img src="http://s24.ucoz.net/t/551/18.gif" border="0"></td><td style="border-bottom:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td><td width="20" height="20"><img src="http://s24.ucoz.net/t/551/19.gif" border="0"></td>
    271.     </tr>
    272. </table>
    273. <!-- Нижний заголовок -->
    274. <table style="background:url('http://s24.ucoz.net/t/551/1.gif') #FFFFFF; margin:0px; padding:0px;" align="center" border="0" cellpadding="0" cellspacing="0" width="95%">
    275.     <tr>
    276.         <td style="border-left:0px solid #9D9CAD; ">&nbsp;</td><td align="center" height="20">заключение </td><td style="border-right:0px solid #9D9CAD;">&nbsp;</td>
    277.     </tr>
    278. </table>
    279. <!-- /Вывод наружу -->
    280. <!--
    281. Регистрация: <form action='' method='POST'>
    282. Логин: <input type='text' u_mail='u_mail' maxlength='127' value=''><br>
    283. Пароль: <input type='text' u_mail='pass1' maxlength='127' value=''><br>
    284. Повторите пароль: <input type='text' u_mail='pass2' maxlength='127' value=''><br>
    285. <input type='Submit' u_mail='breg' value='Вход'>
    286. </form>
    287. -->
    288. <?
    289.   }
    290. ?>
    291. <!--
    292. </body>
    293. -->
    294. </html>
    при запросе: http://127.0.0.1/oow/index.php
    запускается скрипт, проходит различные проверки, выводит таблицы и форму авторизации.
    не заполняя форму давим ВВОД.
    Браузер методом POST передает на сервер скрипту пустые данные.
    Скрипт снова стартует...
    Этим участком проверяет что введенные данные пустые:

    Код (Text):
    1. // Если нажата кнопка с именем blogin (Авторизация)
    2.  if( $_SERVER['REQUEST_METHOD'] == "POST" && isset( $_POST['blogin'] ) )
    3.   {
    4.    // Если поле логина или пароля пустое - делаем редирект
    5.    if( empty( $_POST['u_mail'] ) || empty( $_POST['pass'] ) )
    6.     {  redirect( "login" );  }
    7.    // В протовном случае переходим к авторизации
    8.    auth();
    9.   }

    вызываем редирект

    Код (Text):
    1.  // Редирект с параметром
    2.   function redirect( $par )
    3.   {
    4.    header( "Location: index.php?task=" . $par );
    5.    exit;
    6.   }
    т.е. скрипт еще не выводил в браузер ни каких данных, а значит и заголовки не посылал.
    однако натыкаясь на строку header(" ........... система все равно продолжает говорить, что:


    Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\oow\index.php:2) in C:\Program Files\Apache Group\Apache2\htdocs\oow\index.php on line 31

    (работаю в Хроме)
    (кстати пробовал в разных браузерах)
    (так же пробовал перестартовать Апач - по бубну)

    Вызываю в хроме по правой кнопке на экране состав кода элемента.
    Выводится листинг в котором видно, что ничего до этого варнинга не выводилось.
    Поэтому опять тупик.

    Хотя на внешнем хосте http:\\bff.serpuxov.net\oow\index.php тот же код работает....
    Вот засада!!!!!

    Чем можно залогировать и рассмотреть обмен информацией между браузером и сервером?

    [/img]
     
  22. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Идем далее.
    Скачан и установлен HTTPSniffer
    есть локальный брайзер OPERA
    удаленный сервер bff.serpuxov.net
    локальный сервер 127.0.0.1
    и там и там в папочке oow лежит один и тот же скрипт index.php

    делаем:
    в опере открываем 2 страницы, в каждой пускаем свой запрос:
    http://bff.serpuxov.net/oow/index.php
    http://127.0.0.1/oow/index.php

    открывается некоторая форма авторизации.
    не заполняя поля давим ввод.

    данные методом POST передаются на соответствующий сервер.....
    и вот в заголовках уже отличия.
    в первом случае со внешним сервером:

    Код (Text):
    1. POST /oow/index.php HTTP/1.1
    2. User-Agent: Opera/9.63 (Windows NT 5.1; U; ru) Presto/2.1.1
    3. Host: bff.serpuxov.net
    4. Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
    5. Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
    6. Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
    7. Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
    8. Referer: http://bff.serpuxov.net/oow/index.php
    9. Connection: Keep-Alive, TE
    10. TE: deflate, gzip, chunked, identity, trailers
    11. Content-Length: 31
    12. Content-Type: application/x-www-form-urlencoded
    13.  
    14. name=&pass=&blogin=%C2%F5%EE%E4
    15. HTTP/1.1 302 Found
    16. Date: Thu, 15 Jan 2009 13:18:57 GMT
    17. Server: Apache/2.2.3 (Fedora)
    18. X-Powered-By: PHP/5.1.6
    19. Location: index.php?task=fields
    20. Content-Length: 231
    21. Connection: close
    22. Content-Type: text/html; charset=windows-1251
    23.  
    24. <html>
    25. <head>
    26. <title>oow.at.ua</title>
    27. <link type="text/css" rel="StyleSheet" href="http://s24.ucoz.net/src/css/551.css" />
    28. </head>
    29. <body style="background:url('http://s24.ucoz.net/t/551/1.gif') #FFFFFF; margin:0px; padding:0px;">
    И все сработало, редирект с параметрами прошел....
    скрипт перегрузился и вывел строку с ошибкой.

    Код (Text):
    1. GET /oow/index.php?task=fields HTTP/1.1
    2. User-Agent: Opera/9.63 (Windows NT 5.1; U; ru) Presto/2.1.1
    3. Host: bff.serpuxov.net
    4. Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
    5. Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
    6. Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
    7. Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
    8. Referer: http://bff.serpuxov.net/oow/index.php
    9. Connection: Keep-Alive, TE
    10. TE: deflate, gzip, chunked, identity, trailers
    11.  
    12.  
    13. HTTP/1.1 200 OK
    14. Date: Thu, 15 Jan 2009 13:18:57 GMT
    15. Server: Apache/2.2.3 (Fedora)
    16. X-Powered-By: PHP/5.1.6
    17. Content-Length: 3958
    18. Connection: close
    19. Content-Type: text/html; charset=windows-1251
    20.  
    21. <html>
    22. <head>
    23. <title>oow.at.ua</title>
    24. <link type="text/css" rel="StyleSheet" href="http://s24.ucoz.net/src/css/551.css" />
    25. </head>
    26. <body style="background:url('http://s24.ucoz.net/t/551/1.gif') #FFFFFF; margin:0px; padding:0px;">
    27. Не заполнены все поля<br><br>
    28. <!-- Вывод наружу -->
    29. <table style="background:url('http://s24.ucoz.net/t/551/1.gif') #FFFFFF; margin:0px; padding:0px;" align="center" border="0" cellpadding="0" cellspacing="0" width="95%"> <tr><td style="border-left:0px solid #9D9CAD; ">&nbsp;</td><td align="center" height="20">Оптимизация личной работы</td><td style="border-right:0px solid #9D9CAD;">&nbsp;</td></tr> </table>
    30.  
    31. <table align="center" border="0" cellpadding="0" cellspacing="0" width="98%">
    32. <tr><td width="20" height="20"><img src="http://s24.ucoz.net/t/551/16.gif" border="0"></td><td style="border-top:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td><td width="20" height="20"><img src="http://s24.ucoz.net/t/551/17.gif" border="0"></td></tr>
    33. <tr><td style="border-left:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td><td height="560" style="background:#FFFFFF;">
    34. <!-- Тело экрана -->
    35. <table align="center" border="0" cellpadding="0" cellspacing="0" width="98%">
    36.  
    37. <tr><td valign="top" align="left" width="50%" height="240" style="background:#FFFFFF;"> <FONT FACE="Courier New" SIZE="+1" COLOR="#000000">.........еделить их исполнение.
    38. </FONT></td><td style="border-left:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td><td valign="bottom" align="right" width="30%" height="240" style="background:#FFFFFF;">
    39. Вход:<br><br>
    40. <form action='' method='POST'>
    41. Логин : <input type='text' name='name' maxlength='150' value=''><br>
    42. Пароль: <input type='text' name='pass' maxlength='150' value=''><br>
    43. <input type='Submit' name='blogin' value='Вход'><br>
    44. </form>
    45. </td><td style="border-right:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td>
    46. <TH ROWSPAN=2 width="160" height="480" style="background:#FFFFFF;">
    47. <!--
    48. <script type="text/javascript"><!--
    49. google_ad_client = "pub-6025044686488160";
    50. /* 160x600, BFF главный */
    51. google_ad_slot = "1563170255";
    52. google_ad_width = 160;
    53. google_ad_height = 600;
    54. //-->
    55. <!--
    56. </script>
    57. <script type="text/javascript"
    58. src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    59. </script>
    60. -->
    61. </TH></tr>
    62.  
    63. <tr><td align="right" valign="bottom" width="50%" height="240" style="background:#FFFFFF;">Нажимая клавишу ВХОД, я соглашаюсь .........</td><td style="border-left:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td><td align="right" valign="top" width="30%" height="240" style="background:#FFFFFF;"><br><br><a href="http://bff.serpuxov.net/oow/reg.php" title="Регистрация">Регистрация.</a>&nbsp;&nbsp;&nbsp;<a href="mailto:call89155227227@gmail.com" title="В разработке">Восстановить пароль.</a></td><td style="border-right:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td></tr>
    64.  
    65. </table>
    66. <!-- /Тело экрана -->
    67. </td><td style="border-right:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td></tr>
    68. <tr><td width="20" height="20"><img src="http://s24.ucoz.net/t/551/18.gif" border="0"></td><td style="border-bottom:1px solid #9D9CAD; background:#FFFFFF;">&nbsp;</td><td width="20" height="20"><img src="http://s24.ucoz.net/t/551/19.gif" border="0"></td></tr>
    69. </table>
    70.  
    71. <table style="background:url('http://s24.ucoz.net/t/551/1.gif') #FFFFFF; margin:0px; padding:0px;" align="center" border="0" cellpadding="0" cellspacing="0" width="95%"> <tr><td style="border-left:0px solid #9D9CAD; ">&nbsp;</td><td align="center" height="20">................</td><td style="border-right:0px solid #9D9CAD;">&nbsp;</td></tr> </table>
    72. <!-- /Вывод наружу -->
    73.  
    74. <!--
    75. Регистрация: <form action='' method='POST'>
    76. Логин: <input type='text' name='name' maxlength='127' value=''><br>
    77. Пароль: <input type='text' name='pass1' maxlength='127' value=''><br>
    78. Повторите пароль: <input type='text' name='pass2' maxlength='127' value=''><br>
    79. <input type='Submit' name='breg' value='Вход'>
    80. </form>
    81. -->
    82. </body>
    83. </html>




    В случае с локальным сервером:

    Код (Text):
    1. POST /oow/index.php HTTP/1.1
    2. User-Agent: Opera/9.63 (Windows NT 5.1; U; ru) Presto/2.1.1
    3. Host: 127.0.0.1
    4. Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
    5. Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
    6. Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
    7. Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
    8. Referer: http://127.0.0.1/oow/index.php
    9. Connection: Keep-Alive, TE
    10. TE: deflate, gzip, chunked, identity, trailers
    11. Content-Length: 31
    12. Content-Type: application/x-www-form-urlencoded
    13.  
    14. name=&pass=&blogin=%C2%F5%EE%E4
    15. HTTP/1.1 200 OK
    16. Date: Thu, 15 Jan 2009 13:19:03 GMT
    17. Server: Apache/2.0.55 (Win32) PHP/5.2.0
    18. X-Powered-By: PHP/5.2.0
    19. Content-Length: 488
    20. Keep-Alive: timeout=15, max=100
    21. Connection: Keep-Alive
    22. Content-Type: text/html
    23.  
    24. <html>
    25. <head>
    26. <title>oow.at.ua</title>
    27. <link type="text/css" rel="StyleSheet" href="http://s24.ucoz.net/src/css/551.css" />
    28. </head>
    29. <body style="background:url('http://s24.ucoz.net/t/551/1.gif') #FFFFFF; margin:0px; padding:0px;">
    30. <br />
    31. <b>Warning</b>:  Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\oow\index.php:7) in <b>C:\Program Files\Apache Group\Apache2\htdocs\oow\index.php</b> on line <b>40</b><br />

    Я вижу отличия, но к сожалению проанализировать не могу. Вижу что там где сработало есть запись Location:.........
    Но что далее?
    Получается, что то не так с настойками локального PHP а что?
     
  23. VItalijs

    VItalijs Активный пользователь

    С нами с:
    17 дек 2008
    Сообщения:
    244
    Симпатии:
    0
    Адрес:
    Рига, Латвия
    попробуй javascript
    PHP:
    1.  
    2. function redirect($link){
    3.    echo '<script>document.location.href="'.$link.'"</script>';
    4. }
    5.  
    6.  
     
  24. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Завтра попробую, благодарю. Всем приятного семейного вечера.
     
  25. BFF

    BFF Активный пользователь

    С нами с:
    17 ноя 2008
    Сообщения:
    49
    Симпатии:
    0
    Благодарствую
    Приведенный выше способ является полной заменой header()
    Работает.


    PHP:
    1.   function redirect($par)
    2.    {
    3.    echo '<script>document.location.href="index.php?task='.$par.'"</script>';
    4.    }
    Спасибо!