атрибут местоположения заголовка php не работает - PullRequest
1 голос
/ 17 июня 2010

У меня проблема с расположением заголовка, несмотря на то, что я следую всем советам, которые я могу найти в Интернете.Сценарий рассылки отправляет электронное письмо (я), но я получаю сообщение об ошибке «заголовки уже отправлены», относящиеся к строке 29: {header ("Location: $ thanksURL");} и не перенаправляет на страницу подтверждения.Если я заменю код местоположения заголовка на инструкцию, чтобы напечатать подтверждающее сообщение, это сработает, поэтому в коде местоположения заголовка должно быть что-то, что не нравится серверу.

Вот код:

<?php
ob_start(); 
$to = "msheath@btinternet.com" ; 
$from = $_REQUEST['email'] ; 
$name = $_REQUEST['name'] ; 
$headers = "From: $from"; 
$subject = "Request for Library Document"; 
$thanksURL = "http://www.postalhistory.org.uk/newsite/php/thankyou.php"; //confirmation page
$fields = array(); 
$fields{"name"} = "Name"; 
$fields{"address"} = "Address"; 
$fields{"email"} = "Email"; 
$fields{"tel"} = "Telephone No"; 
$fields{"author1"} = "First Author"; 
$fields{"title1"} = "First Title"; 
$fields{"author2"} = "Second Author"; 
$fields{"title2"} = "Second Title"; 
$body = "I would like to borrow the undermentioned book(s) from the PHS Library:\n\n"; foreach($fields as $a => $b){    $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]); } 
$headers2 = "From: The Librarian, Postal History Society"; 
$subject2 = "Thank you for contacting the Postal History Society"; 
$autoreply = "Thank you for your request. Somebody will get back to you as soon as possible, usually within 48 hours.";
if($from == '') {print "You have not entered an email, please go back and try again";} 
else { 
if($name == '') {print "You have not entered a name, please go back and try again";} 
else { 
$send = mail($to, $subject, $body, $headers); 
$send2 = mail($from, $subject2, $autoreply, $headers2); 
if($send) 
{header("Location: $thanksURL");} 
else 
{print "We encountered an error sending your mail, please notify webmaster@YourCompany.com"; } 
}
}
ob_end_flush()
?>

Перейдите на http://www.postalhistory.org.uk/newsite/php/library.php, чтобы попробовать сами.

Кто-нибудь может подсказать, что не так?

Майк

Ответы [ 3 ]

1 голос
/ 17 июня 2010

«заголовки уже отправлены» означает, что вы уже отправили что-то в браузер.Это может быть пробел где-то.Также возможно, что ваш файл закодирован в UTF-8 с помощью спецификации, что означает, что вы отправили эту спецификацию в браузер

0 голосов
/ 17 июня 2010

Я столкнулся с той же проблемой некоторое время назад и обнаружил, что я что-то повторял, прежде чем устанавливать заголовки. Я удалил оператор echo, а также очистил некоторые пробелы, которые устранили проблему

0 голосов
/ 17 июня 2010

Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с /home/users/uks52804/html/postalhistory.org.uk/newsite/php/contact.php:1) в / home / users / uks52804/html/postalhistory.org.uk/newsite/php/contact.php в строке 29

Это означает, что у вас есть выходные данные до вызова ob_start ().ob_start должен быть первой инструкцией на странице, содержащей этот код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...