2016-10-24 5 views
0

私はこの質問に既に回答している可能性があることを知っていますが、私が得た特定のケースを見つけることはできません。お問い合わせフォームにエラーがあり、アクションPHPスクリプトを起動しません

だから、私のコンタクトフォームは次のようになります。

<div id="contact-form"> 
    <div id="message"></div> 
    <form method="POST" action="php/contact.php" name="contactform" id="contactform"> 
     <input name="name" type="text" id="name" class="inputForm2" onclick="this.select()" value="Name"> 
     <input name="email" type="text" id="email" onclick="this.select()" value="E-mail"> 
     <textarea name="comments" id="comments" onclick="this.select()">Message</textarea> 
     <input type="submit" class="send_message transition" id="submit" value="Send Message"> 
    </form> 
</div> 

とPHPスクリプト

function isEmail($email) { Skipped this one to save space } 

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n"); 

$name  = $_POST['name']; 
$email = $_POST['email']; 
$content = $_POST['comments']; 


if(trim($name) == '') { 
    echo '<div class="error_message">Enter your name.</div>'; 
    exit(); 
} else if(trim($email) == '') { 
    echo '<div class="error_message">Enter a valid email address.</div>'; 
    exit(); 
} else if(!isEmail($email)) { 
    echo '<div class="error_message">You have enter an invalid e-mail address, try again.</div>'; 
    exit(); 
} else if(trim($content) == '') { 
    echo '<div class="error_message">Enter your message.</div>'; 
    exit(); 
} 

if(get_magic_quotes_gpc()) { 
    $comments = stripslashes($comments); 
} 

$emailTo = "[email protected]"; 

$subject = 'Youve been contacted by ' . $name . '.'; 

$e_body = "You have been contacted by: $name" . PHP_EOL . PHP_EOL; 
$e_reply = "E-mail: $email\r\nPhone: $phone"; 
$e_content = "Message:\r\n$comments" . PHP_EOL . PHP_EOL; 

//$content = wordwrap($e_body . $e_content . $e_reply, 70); 

$headers = "From: $email" . PHP_EOL; 
$headers .= "Reply-To: $email" . PHP_EOL; 
$headers .= "MIME-Version: 1.0" . PHP_EOL; 
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL; 
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL; 

if(mail($emailTo, $subject, $content, $headers)) { 

    echo "<fieldset>"; 
    echo "<div id='success_page'>"; 
    echo "<h3>Email Sent Successfully.</h3>"; 
    echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>"; 
    echo "</div>"; 
    echo "</fieldset>"; 

} else { 

    echo 'ERROR!'; 
} 

あなたはこれで間違っているものを私を指してもらえますか?

+0

何が問題ですか?何が起こっていますか? – Araz

答えて

0

まずあなたがPHPフォルダにcontact.phpを持っていることを確認し、またあなたのHTMLフォームが

その後、PHPに達している.IF私はあなたのhtml形式でonclickの方法を見ることができるので、あなたのHTMLフォームがPHPコードに達しているかどうか確認してくださいあなたが isemail機能を使用している.IF

あなたは、あなたはあなたが

function isEmail($email) { 

    return filter_var($email, FILTER_VALIDATE_EMAIL); 
    } 

完全なコード次のように更新してください検証にelse if(!isEmail($email)) {をチェックしているので、trueを返す必要はありisEmail($email)機能に問題がある

function isEmail($email) { 

     return filter_var($email, FILTER_VALIDATE_EMAIL); 
     } 

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n"); 

$name  = $_POST['name']; 
$email = $_POST['email']; 
$content = $_POST['comments']; 


if(trim($name) == '') { 
    echo '<div class="error_message">Enter your name.</div>'; 
    exit(); 
} else if(trim($email) == '') { 
    echo '<div class="error_message">Enter a valid email address.</div>'; 
    exit(); 
} else if(!isEmail($email)) { 
    echo '<div class="error_message">You have enter an invalid e-mail address, try again.</div>'; 
    exit(); 
} else if(trim($content) == '') { 
    echo '<div class="error_message">Enter your message.</div>'; 
    exit(); 
} 

if(get_magic_quotes_gpc()) { 
    $comments = stripslashes($comments); 
} 

$emailTo = "[email protected]"; 

$subject = 'Youve been contacted by ' . $name . '.'; 

$e_body = "You have been contacted by: $name" . PHP_EOL . PHP_EOL; 
$e_reply = "E-mail: $email\r\nPhone: $phone"; 
$e_content = "Message:\r\n$comments" . PHP_EOL . PHP_EOL; 

//$content = wordwrap($e_body . $e_content . $e_reply, 70); 

$headers = "From: $email" . PHP_EOL; 
$headers .= "Reply-To: $email" . PHP_EOL; 
$headers .= "MIME-Version: 1.0" . PHP_EOL; 
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL; 
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL; 

if(mail($emailTo, $subject, $content, $headers)) { 

    echo "<fieldset>"; 
    echo "<div id='success_page'>"; 
    echo "<h3>Email Sent Successfully.</h3>"; 
    echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>"; 
    echo "</div>"; 
    echo "</fieldset>"; 

} else { 

    echo 'ERROR!'; 
} 
+0

このような迅速な返信をありがとう、私はあなたのコードを試してみました。私はまだフォームを送信するときにエラーが表示されるようです。私はif(mail($ emailTo、$ subject、$ content、$ headers))部分に失敗すると信じています。私はエラーで$ emailToを表示するように追加しましたが、メール機能がfalseを返す何らかの理由で、すべての値が正しいと思われます。多分、私のホスティングが正しく設定されておらず、サーバ自体が電子メールをブロックしているのかもしれません。 私はWin2012とPleskでVPSを使用しています。 http://prntscr.com/czslbl –

+0

確かに。ログを通過してメッセージを発見しました: PHP警告:mail():SMTPサーバーの応答:503このメールサーバーは、ローカル以外の電子メールアドレスに送信しようとすると認証が必要です。メールクライアントの設定を確認するか、管理者に連絡して、ドメインまたはアドレスがこのサーバー用に定義されていることを確認してください。 C:\ Inetpub \ vhosts \ ernest-l.com \ httpdocs \ php \ contact.php(50行目) –

関連する問題