Любые предложения о том, как решить проблему с внутренней ошибкой сервера для почти идентичного скрипта? - PullRequest
0 голосов
/ 23 декабря 2009

На моем сайте есть contactUser.php, который отправляет почту, и replyMail.php. Я установил PHPMail на моего контактного пользователя для отправки уведомлений по электронной почте, что прекрасно работает. Когда я помещаю тот же кусок кода в свой replyMail (которое отправляется в то же место, что и почта контактного пользователя, в папку «Входящие»), в которой используются те же переменные, это вызывает внутреннюю ошибку сервера. Я пробовал разные переменные GET, а также запросы echoed die ($ vars) и echoed. Любые идеи, в чем может быть проблема. Вот мой код:

$prof = new User($_GET['id']);

$query = "SELECT `Email` FROM `Users` WHERE `id` = '" . $prof->id . "'";
$request = mysql_query($query,$connection) or die(mysql_error());
$result = mysql_fetch_array($request); 

$Email = $result['Email'];


$to = $Email;
$subject = "$auth->first_name $auth->last_name sent you a message";
$message = "$auth->first_name $auth->last_name sent you a message:<br /> <br /> <a href='http://www.blah.org/Inbox.php'>Click here to view</a><br /><br /> The Team";
$from = "blah<noreply@blah.org>";
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From:$from";
mail($to, $subject, $message, $headers);

Ответы [ 3 ]

1 голос
/ 23 декабря 2009

Это весь сценарий? Я не вижу там ничего, что могло бы вызвать ошибку 500. Вы можете опубликовать всю страницу или ссылку на исходный код всей страницы?

Является ли это частью какого-либо цикла или массовой рассылки, которая вызывается повторно?

Нет ли способа получить журналы ошибок Apache? Только они дадут вам определенный ответ, что пойдет не так.

1 голос
/ 23 декабря 2009

Я действительно предлагаю обернуть это в функцию. Исходя из того, что вы опубликовали, я понял, что у вас есть весь код в глобальном пространстве имен, и в этом случае любое количество автоматических предопределений или включений может легко испортить переменные.

Что-то вроде:

// Function that accepts a user object and a database connection, then sends a notice email.
function email_message_notice($prof, $connection){
$query = "SELECT `Email` FROM `Users` WHERE `id` = '" . $prof->id . "'";
$request = mysql_query($query,$connection) or die(mysql_error());
$result = mysql_fetch_array($request); 

$Email = $result['Email'];

$to = $Email;
$subject = "$auth->first_name $auth->last_name sent you a message";
$message = "$auth->first_name $auth->last_name sent you a message:<br /> <br /> <a href='http://www.blah.org/Inbox.php'>Click here to view</a><br /><br /> The Team";
$from = "blah<noreply@blah.org>";
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From:$from";
$res = mail($to, $subject, $message, $headers);
return $res;
}


$prof = new User($_GET['id']);
$sent = email_message_notice($prof, $connection);

Поскольку речь идет о базе данных, это непроверенный код, поэтому вы захотите проверить, работает ли он, и хотите самостоятельно отладить любые другие проблемы, но в противном случае это должен быть хороший способ разделения и совместного использования кода. Если вы выполняете одно и то же в обоих сценариях, вы можете просто включить функцию email_user в отдельное включение.

1 голос
/ 23 декабря 2009

Загляните в журнал сервера. Должен сказать вам, что не так. Может быть, права доступа к файлу.

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