Внутренняя ошибка сервера при почте()

Я пытаюсь запустить этот скрипт, но он выдает 500 INTERNAL ERROR PROBLEM, хотя код не выдает никакой ошибки.
Скрипт выдает ошибку Internal Server 500, но когда я удаляю второй $user mail,, он работает нормально. Я хочу отправить письмо с подтверждением а также при успешной отправке и перенаправлении на страницу благодарности. Надеюсь, я правильно закодировал. Пожалуйста, помогите

<?php
//output variables

$output="";

$host="databasehost.com"; // Host name 
$username="username"; // Mysql username 
$password="password"; // Mysql password 
$db_name="databasename"; // Database name 
$tbl_name="tablename"; // Table name 

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$result = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="property-value" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result1 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="firstname" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result2 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="lastname" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result3 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="from_email" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result4 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="houseflat-nos" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result5 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="street" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result6 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="towncity" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result7 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="postcode" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result8 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="telephone" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result9 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="outstanding-mortgage" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

//print values to screen
while ($row = mysql_fetch_assoc($result)) {
  //echo $row['ID'];
  $output =  $row['field_value'];
  $percentage = 75;

  $prelim = ($percentage / 100) * $output;
}

while ($row = mysql_fetch_assoc($result1)) {
  //echo $row['ID'];
  $output1 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result2)) {
  //echo $row['ID'];
  $output2 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result3)) {
  //echo $row['ID'];
  $output3 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result4)) {
  //echo $row['ID'];
  $output4 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result5)) {
  //echo $row['ID'];
  $output5 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result6)) {
  //echo $row['ID'];
  $output6 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result7)) {
  //echo $row['ID'];
  $output7 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result8)) {
  //echo $row['ID'];
  $output8 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result9)) {
  //echo $row['ID'];
  $output9 =  $row['field_value'];
}

// Free the resources associated with the result set
// This is done automatically at the end of the script
mysql_free_result($result,$result1,$result2,$result3,$result4,$result5,$result6,$result7,$result8,$result9);

// References to the name values in your HTML form
$field_property1 = $_POST['typeofproperty'];
$field_property2 = $_POST['bedrooms'];
$field_property3 = $_POST['bathrooms'];
$field_property4 = $_POST['toilets'];
$field_property5 = $_POST['reception'];
$field_property6 = $_POST['garage'];
$field_property7 = $_POST['garden'];
$field_property8 = $_POST['generalCondition'];
$field_property9 = $_POST['builtYear'];
$field_property10 = $_POST['centralHeating'];
$field_property11 = $_POST['doubleGlazing'];
$field_property12 = $_POST['structure'];
$field_property13 = $_POST['association'];
$field_property14 = $_POST['inblock'];
$field_property15 = $_POST['freehold'];
$field_property16 = $_POST['yearsleft'];
$field_property17 = $_POST['why'];
$field_property18 = $_POST['when'];
$field_property19 = $_POST['other'];
$field_property20 = $_POST['how'];
$field_property21 = $_POST['howLong'];
$field_property22 = $_POST['workforproperty'];
$field_property23 = $_POST['uniquefeatures'];
$field_property24 = $_POST['anythingelse'];

$user = "$output3";
$usersubject = "Thank You";
$userheaders = "From: [email protected]\n";
$usermessage = "Thank You for your Enquiry. A member of staff will be in contact shortly to discuss your requirements.";

// Since some emails are unknown, I reccomend using a known email sender to avoid messages to go directly to the SPAM folder
$field_sender = ' [email protected]';

// In which address would you like to recieve the messages? Would you like a custom Subject for each?
$mail_to  = ' [email protected]';
$subject  = '[QUALIFIED LEAD] Enuiry ';

// This builds the message
$body_message = 'From: '.$output1."\n";
$body_message  .= 'Phone: '.$output8."\n";
$body_message  .= 'Email: '.$output3."\n\n";
$body_message  .= 'Flat: '.$output4."\n";
$body_message  .= 'Street: '.$output5."\n";
$body_message  .= 'City: '.$output6."\n";
$body_message  .= 'ZIP: '.$output7."\n\n";
$body_message  .= 'Property Value: '.$output."\n\n";
$body_message  .= 'Offer Value: '.$prelim."\n";
$body_message  .= 'Outstanding Value: '.$output9."\n\n";
$body_message  .= 'Type of Property: '.$field_property1."\n";
$body_message  .= 'Number of Bedrooms: '.$field_property2."\n";
$body_message  .= 'Number of Bathrooms: '.$field_property3."\n";
$body_message  .= 'Number of Separate Toilets: '.$field_property4."\n";
$body_message  .= 'Number of Reception Rooms: '.$field_property5."\n";
$body_message  .= 'Garage: '.$field_property6."\n";
$body_message  .= 'Garden: '.$field_property7."\n";
$body_message  .= 'General Condition of Property: '.$field_property8."\n";
$body_message  .= 'Property Built In: '.$field_property9."\n";
$body_message  .= 'Central Heating: '.$field_property10."\n";
$body_message  .= 'Double Glazing: '.$field_property11."\n";
$body_message  .= 'Structure of Property: '.$field_property12."\n";
$body_message  .= 'Ex-Council/Housing association: '.$field_property13."\n\n";
$body_message  .= 'Property in a Block: '.$field_property14."\n";
$body_message  .= 'Freehold/Leasehold: '.$field_property15."\n";
$body_message  .= 'Years of Leashold Left: '.$field_property16."\n";
$body_message  .= 'Reason for Quick Sale: '.$field_property17."\n\n";
$body_message  .= 'How soon: '.$field_property18."\n\n";
$body_message  .= 'Any Loans Secured on Property: '.$field_property19."\n\n";
$body_message  .= 'How Much Loan Secured: '.$field_property20."\n\n";
$body_message  .= 'Property Currently in Market: '.$field_property21."\n\n";
$body_message  .= 'For How Long: '.$field_property22."\n\n";
$body_message  .= 'Any Work Done: '.$field_property23."\n\n";
$body_message  .= 'Any Unique Feature: '.$field_property24."\n\n";
$body_message  .= 'Additional Details to Buyer: '.$field_property25."\n\n";


// Email headers 'From' a known email address to avoid being taken as SPAM and 'Reply-to' the one that filed in the form
$headers  = 'From: '.$field_sender."\r\n";
$headers       .= 'Reply-To: '.$field_email."\r\n";

// Status, builds whole email structure
mail($mail_to, $subject, $body_message, $headers);

mail($user,$usersubject,$usermessage,$userheaders);

if(mail($mail_to, $subject, $body_message, $headers)){
header("Location: http://websitename.com/thankyou-page/);
}else{
header("Location: http://websitename.com");
}
exit;


?>

<?php 
// close connection 
mysql_close();
?>

person Skyweb Studios    schedule 16.01.2014    source источник
comment
Код состояния 500 Internal Server Error (или пустая страница) означает, что ваш скрипт выдает ошибку, но вы не настроили PHP для отображения сообщений об ошибках. Это то, что вам нужно исправить, прежде чем идти дальше; невозможно правильно кодировать без помощи сообщений об ошибках. Вот краткое объяснение.   -  person Álvaro González    schedule 16.01.2014
comment
Я предлагаю вам посмотреть журналы Apache, где вы можете получить точную ошибку   -  person Freak    schedule 16.01.2014
comment
Спасибо за быстрый ответ... Вы имеете в виду, что я добавляю код, чтобы показать ошибку... У меня нет доступа к файлу php.ini или htaccess. Есть ли другой способ?   -  person Skyweb Studios    schedule 16.01.2014
comment
$пользователь = $выход3; ... верно? Я думаю, что это должно быть $user = $output3;   -  person user1844933    schedule 16.01.2014
comment
ofcorse , если поставить то эта штука превратится в струну   -  person Freak    schedule 16.01.2014
comment
Где заключительный " ваш первый header звонок?   -  person Bart Friederichs    schedule 16.01.2014
comment
Я надеюсь на это... Значения полей вызываются из предыдущей заполненной формы. Я предполагаю, что это правильно, поскольку он правильно отображает значения.   -  person Skyweb Studios    schedule 16.01.2014
comment
много ошибок в файле. @user3202666 user3202666 Вам нужно внимательно просмотреть этот файл и попытаться научиться использовать двойные кавычки.   -  person Freak    schedule 16.01.2014
comment
Все работает нормально, пока не добавлено письмо с подтверждением... Когда я добавляю второй почтовый скрипт, он переворачивается!   -  person Skyweb Studios    schedule 16.01.2014
comment
Может ли кто-нибудь быть достаточно любезен, чтобы показать мне ошибки или показать мне правильный код? Пожалуйста...   -  person Skyweb Studios    schedule 16.01.2014
comment
Хорошо... Проблема в том, что сайт размещен на iPage, и он не разрешает удаленный доступ к SQL-серверу. В остальном большинство проблем исправлено. Любые идеи, как это изменить?   -  person Skyweb Studios    schedule 16.01.2014
comment
header("Location: http://websitename.com/thankyou-page/); определенно проблема, если вы еще не исправили ее (добавьте перед закрытием)).   -  person Phil Perry    schedule 17.01.2014


Ответы (4)


500 Internal Server Error отображается, если в вашем php-коде есть фатальные ошибки, но отображение ошибок отключено. Вы можете попробовать это, чтобы увидеть саму ошибку вместо страницы с ошибкой 500:

В вашем php-файле:

ini_set('display_errors', 1);

Вы также можете проверить журналы ошибок Apache, если у вас есть к ним доступ.

person Hassan    schedule 16.01.2014

Если вы удалите/закомментируете второй вызов mail(), он сработает? Вы же знаете, что можете указать несколько адресов «кому» и использовать только один mail(), не так ли?

$mail_to  = ' [email protected], '.$user;

Я не уверен, причиняет ли начальный пробел какой-либо вред (попробуйте удалить его, если ничего не работает). Итак, является ли $user законным адресом электронной почты? Вы его распечатали, чтобы проверить?

Или вы можете добавить адрес электронной почты «cc:» в заголовок, если вы предпочитаете отправлять его человеку таким образом.

person Phil Perry    schedule 17.01.2014

Спасибо за все блестящие ответы, ребята! (Альваро Г. Викарио, урод, Барт Фридерихс, Барт Фридерихс и не забыть Хасана)

Наконец-то это отсортировано. Пожалуйста, найдите работающий код ниже: (не стесняйтесь изменять его, если хотите)

<?php

 ini_set('display_errors', 1);   

//output variables

$output="";

$host="databasehost.com"; // Host name 
$username="username"; // Mysql username 
$password="password"; // Mysql password 
$db_name="databasename"; // Database name 
$tbl_name="tablename"; // Table name 

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$result = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="property-value" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result1 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="firstname" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result2 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="lastname" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result3 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="from_email" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result4 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="houseflat-nos" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result5 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="street" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result6 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="towncity" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result7 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="postcode" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result8 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="telephone" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

$result9 = mysql_query('SELECT `field_value` FROM `tablename` WHERE `field_name`="outstanding-mortgage" ORDER BY `submit_time` DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

//print values to screen
while ($row = mysql_fetch_assoc($result)) {
  //echo $row['ID'];
  $output =  $row['field_value'];
  $percentage = 75;

  $prelim = ($percentage / 100) * $output;
}

while ($row = mysql_fetch_assoc($result1)) {
  //echo $row['ID'];
  $output1 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result2)) {
  //echo $row['ID'];
  $output2 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result3)) {
  //echo $row['ID'];
  $output3 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result4)) {
  //echo $row['ID'];
  $output4 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result5)) {
  //echo $row['ID'];
  $output5 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result6)) {
  //echo $row['ID'];
  $output6 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result7)) {
  //echo $row['ID'];
  $output7 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result8)) {
  //echo $row['ID'];
  $output8 =  $row['field_value'];
}

while ($row = mysql_fetch_assoc($result9)) {
  //echo $row['ID'];
  $output9 =  $row['field_value'];
}

// Free the resources associated with the result set
// This is done automatically at the end of the script
mysql_free_result($result,$result1,$result2,$result3,$result4,$result5,$result6,$result7,$result8,$result9);

// References to the name values in your HTML form
$field_property1 = $_POST['typeofproperty'];
$field_property2 = $_POST['bedrooms'];
$field_property3 = $_POST['bathrooms'];
$field_property4 = $_POST['toilets'];
$field_property5 = $_POST['reception'];
$field_property6 = $_POST['garage'];
$field_property7 = $_POST['garden'];
$field_property8 = $_POST['generalCondition'];
$field_property9 = $_POST['builtYear'];
$field_property10 = $_POST['centralHeating'];
$field_property11 = $_POST['doubleGlazing'];
$field_property12 = $_POST['structure'];
$field_property13 = $_POST['association'];
$field_property14 = $_POST['inblock'];
$field_property15 = $_POST['freehold'];
$field_property16 = $_POST['yearsleft'];
$field_property17 = $_POST['why'];
$field_property18 = $_POST['when'];
$field_property19 = $_POST['other'];
$field_property20 = $_POST['how'];
$field_property21 = $_POST['howLong'];
$field_property22 = $_POST['workforproperty'];
$field_property23 = $_POST['uniquefeatures'];
$field_property24 = $_POST['anythingelse'];

$user = "$output3";
$usersubject = "Thank You";
$userheaders = "From: [email protected]\n";
$usermessage = "Thank You for your Enquiry. A member of staff will be in contact shortly to discuss your requirements.";

// Since some emails are unknown, I reccomend using a known email sender to avoid messages to go directly to the SPAM folder
$field_sender = ' [email protected]';

// In which address would you like to recieve the messages? Would you like a custom Subject for each?
$mail_to  = ' [email protected], '.$user;
$subject  = '[QUALIFIED LEAD] Enuiry ';

// This builds the message
$body_message = 'From: '.$output1."\n";
$body_message  .= 'Phone: '.$output8."\n";
$body_message  .= 'Email: '.$output3."\n\n";
$body_message  .= 'Flat: '.$output4."\n";
$body_message  .= 'Street: '.$output5."\n";
$body_message  .= 'City: '.$output6."\n";
$body_message  .= 'ZIP: '.$output7."\n\n";
$body_message  .= 'Property Value: '.$output."\n\n";
$body_message  .= 'Offer Value: '.$prelim."\n";
$body_message  .= 'Outstanding Value: '.$output9."\n\n";
$body_message  .= 'Type of Property: '.$field_property1."\n";
$body_message  .= 'Number of Bedrooms: '.$field_property2."\n";
$body_message  .= 'Number of Bathrooms: '.$field_property3."\n";
$body_message  .= 'Number of Separate Toilets: '.$field_property4."\n";
$body_message  .= 'Number of Reception Rooms: '.$field_property5."\n";
$body_message  .= 'Garage: '.$field_property6."\n";
$body_message  .= 'Garden: '.$field_property7."\n";
$body_message  .= 'General Condition of Property: '.$field_property8."\n";
$body_message  .= 'Property Built In: '.$field_property9."\n";
$body_message  .= 'Central Heating: '.$field_property10."\n";
$body_message  .= 'Double Glazing: '.$field_property11."\n";
$body_message  .= 'Structure of Property: '.$field_property12."\n";
$body_message  .= 'Ex-Council/Housing association: '.$field_property13."\n\n";
$body_message  .= 'Property in a Block: '.$field_property14."\n";
$body_message  .= 'Freehold/Leasehold: '.$field_property15."\n";
$body_message  .= 'Years of Leashold Left: '.$field_property16."\n";
$body_message  .= 'Reason for Quick Sale: '.$field_property17."\n\n";
$body_message  .= 'How soon: '.$field_property18."\n\n";
$body_message  .= 'Any Loans Secured on Property: '.$field_property19."\n\n";
$body_message  .= 'How Much Loan Secured: '.$field_property20."\n\n";
$body_message  .= 'Property Currently in Market: '.$field_property21."\n\n";
$body_message  .= 'For How Long: '.$field_property22."\n\n";
$body_message  .= 'Any Work Done: '.$field_property23."\n\n";
$body_message  .= 'Any Unique Feature: '.$field_property24."\n\n";
$body_message  .= 'Additional Details to Buyer: '.$field_property25."\n\n";


// Email headers 'From' a known email address to avoid being taken as SPAM and 'Reply-to' the one that filed in the form
$headers  = 'From: '.$field_sender."\r\n";
$headers       .= 'Reply-To: '.$field_email."\r\n";

// Status, builds whole email structure


if(mail($mail_to, $subject, $body_message, $headers)){
header("Location: http://websitename.com/thankyou-page/");
}else{
header("Location: http://websitename.com");
}
exit;


?>

<?php 
// close connection 
mysql_close();
?>
person Skyweb Studios    schedule 17.01.2014

person    schedule
comment
$result3 и $output3 в любом случае должны быть строкой (адресом электронной почты), так что никакого вреда не будет (всего несколько потерянных циклов). - person Phil Perry; 17.01.2014