За последние 24 часа нас посетили 73599 программистов и 10174 робота. Сейчас ищет 2881 программист ...

Предупреждение . Невозможно изменить информацию заголовка - уже отправленные заголовки

Тема в разделе "PHP для новичков", создана пользователем hvk, 30 окт 2018.

  1. hvk

    hvk Новичок

    С нами с:
    30 окт 2018
    Сообщения:
    2
    Симпатии:
    0
    При оформлении заказа появляется такая надпись:"Предупреждение . Невозможно изменить информацию заголовка - уже отправленные заголовки (вывод запущен в /home/host1494522/dhappyman.ru/htdocs/www/index.php:1) в /home/host1494522/dhappyman.ru/htdocs/www/index. php в строке 79"
    Вот мой index. php (часть)
    PHP:
    1. <?php
    2.    function ValidateEmail($email)
    3.    {
    4.       $pattern = '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i';
    5.       return preg_match($pattern, $email);
    6.    }
    7.    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    8.    {
    9.       $mailto = 'hvkshop24@gmail.com';
    10.       $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;
    11.       $subject = 'Заявка на покупку';
    12.       $message = 'Values submitted from web site form:';
    13.       $success_url = './otpr.php';
    14.       $error_url = '';
    15.       $error = '';
    16.       $eol = "\r\n";
    17.       $max_filesize = isset($_POST['filesize']) ? $_POST['filesize'] * 1024 : 1024000;
    18.       $boundary = md5(uniqid(time()));
    19.       $header  = 'From: '.$mailfrom.$eol;
    20.       $header .= 'Reply-To: '.$mailfrom.$eol;
    21.       $header .= 'MIME-Version: 1.0'.$eol;
    22.       $header .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'.$eol;
    23.       $header .= 'X-Mailer: PHP v'.phpversion().$eol;
    24.       if (!ValidateEmail($mailfrom))
    25.       {
    26.          $error .= "The specified email address is invalid!\n<br>";
    27.       }
    28.       if (!empty($error))
    29.       {
    30.          $errorcode = file_get_contents($error_url);
    31.          $replace = "##error##";
    32.          $errorcode = str_replace($replace, $error, $errorcode);
    33.          echo $errorcode;
    34.          exit;
    35.       }
    36.       $internalfields = array ("submit", "reset", "send", "captcha_code");
    37.       $message .= $eol;
    38.       $message .= "IP Address : ";
    39.       $message .= $_SERVER['REMOTE_ADDR'];
    40.       $message .= $eol;
    41.       foreach ($_POST as $key => $value)
    42.       {
    43.          if (!in_array(strtolower($key), $internalfields))
    44.          {
    45.             if (!is_array($value))
    46.             {
    47.                $message .= ucwords(str_replace("_", " ", $key)) . " : " . $value . $eol;
    48.             }
    49.             else
    50.             {
    51.                $message .= ucwords(str_replace("_", " ", $key)) . " : " . implode(",", $value) . $eol;
    52.             }
    53.          }
    54.       }
    55.       $body  = 'This is a multi-part message in MIME format.'.$eol.$eol;
    56.       $body .= '--'.$boundary.$eol;
    57.       $body .= 'Content-Type: text/plain; charset=ISO-8859-1'.$eol;
    58.       $body .= 'Content-Transfer-Encoding: 8bit'.$eol;
    59.       $body .= $eol.stripslashes($message).$eol;
    60.       if (!empty($_FILES))
    61.       {
    62.           foreach ($_FILES as $key => $value)
    63.           {
    64.              if ($_FILES[$key]['error'] == 0 && $_FILES[$key]['size'] <= $max_filesize)
    65.              {
    66.                 $body .= '--'.$boundary.$eol;
    67.                 $body .= 'Content-Type: '.$_FILES[$key]['type'].'; name='.$_FILES[$key]['name'].$eol;
    68.                 $body .= 'Content-Transfer-Encoding: base64'.$eol;
    69.                 $body .= 'Content-Disposition: attachment; filename='.$_FILES[$key]['name'].$eol;
    70.                 $body .= $eol.chunk_split(base64_encode(file_get_contents($_FILES[$key]['tmp_name']))).$eol;
    71.              }
    72.          }
    73.       }
    74.       $body .= '--'.$boundary.'--'.$eol;
    75.       if ($mailto != '')
    76.       {
    77.          mail($mailto, $subject, $body, $header);
    78.       }
    79.       header('Location: '.$success_url);
    80.       exit;
    81.    }
    82. ?>
    83. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    84. <html>
    85. <head>
    Я не разбираюсь в программировании.Помогите, пожалуйста
     
    #1 hvk, 30 окт 2018
    Последнее редактирование модератором: 30 окт 2018
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    Из этого следует, что либо файл сохранён в формате "UTF-8 with BOM", либо перед открывающим тегом <?php есть другой символ.
    Для начала откройте файл в редакторе, позволяющем менять кодировку при сохранении (notepad++, sublime text, etc.) и сохраните файл в кодировке "UTF-8" (той, где нет приписки with BOM).
     
  3. hvk

    hvk Новичок

    С нами с:
    30 окт 2018
    Сообщения:
    2
    Симпатии:
    0
    Спасибо.
    Но ясности нет.
    1перед открывающим тегом <?php никаких символов нет.это видно
    2.кодировка стоит UTF-8. специально проверял
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.875
    Симпатии:
    756
    Адрес:
    Татарстан
    а это что за хрень после? - убрать
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.862
    Симпатии:
    657
    @ADSoft, это норм. У ТСа в конце «ветки отправки» стоит exit.
    --- Добавлено ---
    BOM невидимый. Нужно в HEX-редакторе и т.п. смотреть.
     
  6. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    Чем проверяли?
    Символы в каком редакторе не видны? В 16-ричном?
    "Непечатаемые символы" - они на то и непечатаемые, что не во все редакторы считают необходимым все их показывать.
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.843
    Симпатии:
    1.338
    Адрес:
    Лень
    https://www.w3schools.com/PhP/filter_validate_email.asp

    PHP:
    1. $_POST['email'] ?? $mailto;
    PHP:
    1. ( $_POST['filesize'] ?? 1000 ) * 1024;
    говнокода дофига