При оформлении заказа появляется такая надпись:"Предупреждение . Невозможно изменить информацию заголовка - уже отправленные заголовки (вывод запущен в /home/host1494522/dhappyman.ru/htdocs/www/index.php:1) в /home/host1494522/dhappyman.ru/htdocs/www/index. php в строке 79" Вот мой index. php (часть) PHP: <?php function ValidateEmail($email) { $pattern = '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i'; return preg_match($pattern, $email); } if ($_SERVER['REQUEST_METHOD'] == 'POST') { $mailto = 'hvkshop24@gmail.com'; $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto; $subject = 'Заявка на покупку'; $message = 'Values submitted from web site form:'; $success_url = './otpr.php'; $error_url = ''; $error = ''; $eol = "\r\n"; $max_filesize = isset($_POST['filesize']) ? $_POST['filesize'] * 1024 : 1024000; $boundary = md5(uniqid(time())); $header = 'From: '.$mailfrom.$eol; $header .= 'Reply-To: '.$mailfrom.$eol; $header .= 'MIME-Version: 1.0'.$eol; $header .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'.$eol; $header .= 'X-Mailer: PHP v'.phpversion().$eol; if (!ValidateEmail($mailfrom)) { $error .= "The specified email address is invalid!\n<br>"; } if (!empty($error)) { $errorcode = file_get_contents($error_url); $replace = "##error##"; $errorcode = str_replace($replace, $error, $errorcode); echo $errorcode; exit; } $internalfields = array ("submit", "reset", "send", "captcha_code"); $message .= $eol; $message .= "IP Address : "; $message .= $_SERVER['REMOTE_ADDR']; $message .= $eol; foreach ($_POST as $key => $value) { if (!in_array(strtolower($key), $internalfields)) { if (!is_array($value)) { $message .= ucwords(str_replace("_", " ", $key)) . " : " . $value . $eol; } else { $message .= ucwords(str_replace("_", " ", $key)) . " : " . implode(",", $value) . $eol; } } } $body = 'This is a multi-part message in MIME format.'.$eol.$eol; $body .= '--'.$boundary.$eol; $body .= 'Content-Type: text/plain; charset=ISO-8859-1'.$eol; $body .= 'Content-Transfer-Encoding: 8bit'.$eol; $body .= $eol.stripslashes($message).$eol; if (!empty($_FILES)) { foreach ($_FILES as $key => $value) { if ($_FILES[$key]['error'] == 0 && $_FILES[$key]['size'] <= $max_filesize) { $body .= '--'.$boundary.$eol; $body .= 'Content-Type: '.$_FILES[$key]['type'].'; name='.$_FILES[$key]['name'].$eol; $body .= 'Content-Transfer-Encoding: base64'.$eol; $body .= 'Content-Disposition: attachment; filename='.$_FILES[$key]['name'].$eol; $body .= $eol.chunk_split(base64_encode(file_get_contents($_FILES[$key]['tmp_name']))).$eol; } } } $body .= '--'.$boundary.'--'.$eol; if ($mailto != '') { mail($mailto, $subject, $body, $header); } header('Location: '.$success_url); exit; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> Я не разбираюсь в программировании.Помогите, пожалуйста
Из этого следует, что либо файл сохранён в формате "UTF-8 with BOM", либо перед открывающим тегом <?php есть другой символ. Для начала откройте файл в редакторе, позволяющем менять кодировку при сохранении (notepad++, sublime text, etc.) и сохраните файл в кодировке "UTF-8" (той, где нет приписки with BOM).
Спасибо. Но ясности нет. 1перед открывающим тегом <?php никаких символов нет.это видно 2.кодировка стоит UTF-8. специально проверял
@ADSoft, это норм. У ТСа в конце «ветки отправки» стоит exit. --- Добавлено --- BOM невидимый. Нужно в HEX-редакторе и т.п. смотреть.
Чем проверяли? Символы в каком редакторе не видны? В 16-ричном? "Непечатаемые символы" - они на то и непечатаемые, что не во все редакторы считают необходимым все их показывать.
https://www.w3schools.com/PhP/filter_validate_email.asp PHP: $_POST['email'] ?? $mailto; PHP: ( $_POST['filesize'] ?? 1000 ) * 1024; говнокода дофига