2017-05-24 11 views
-2

ローカルサーバー上でWebサイトを実行しています。連絡フォームに必要なデータを入力し、送信ボタンをクリックすると、「500 Internal Server Error」が表示されます。私はこれがローカルサーバ用のPHPメール設定に関係していると仮定しています。500内部サーバーエラー(お問い合わせフォーム、PHP)

PHP:

<?php 
if(isset($_POST["name"]) && isset($_POST["email"]) && isset($_POST["msg"])){ 
    $name = $_POST["name"]; 
    $email = $_POST["email"]; 
    $subject = $_POST["subject"]; 
    $msg = nl2br($_POST["msg"]); 
    $to = "[email protected]"; 
    $from = $email; 
    $message = "<b>Name:</b> ".$name." <br><b>E-mail:</b> ".$email." <br><b>Subject:</b> ".$subject." <br><p> ".$msg." </p>"; 
    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 
    $headers .= "From: $from" . "\r\n"; 
    if(mail($to, $subject, $message, $headers)){ 
     echo "Success"; 
    }else{ 
     echo "The server failed to send the message. Please try again later."; 
    } 
} 
?> 

JS:

function _(id){return document.getElementById(id);} 
function submitForm(){ 
    _("submit").disabled = true; 
    _("status").innerHTML = "Please wait..."; 

    var formdata = new FormData(); 
    formdata.append("name", _("name").value); 
    formdata.append("email", _("email").value); 
    formdata.append("subject", _("subject").value); 
    formdata.append("msg", _("msg").value); 

    var ajax = new XMLHttpRequest(); 
    ajax.open("POST", "contact.php"); 
    ajax.onreadystatechange = function(){ 
    if(ajax.readyState == 4 && ajax.status == 200){ 
     if(ajax.responseText == "Success"){ 
     _("status").innerHTML = ""; 
     _("response").innerHTML = "Your message has been successfully sent."; 
     }else{ 
     _("status").innerHTML = ajax.responseText; 
     _("submit").disabled = false; 
     } 
    } 
    } 
    ajax.send(formdata); 
} 

答えて

0

解決済み。問題は、MS IIS上で動作するローカルサーバーの設定にありました。

0

私はあなたの問題は、SMTPサーバの設定によって引き起こされると思います。コードに構文エラーはありません。 phpが間違ったフォルダにあると、500エラーではなく404エラーが返されます。 phpファイルのif/else部分をコメントして、ファイルの他の部分が動作していることを確認してください。

関連する問題