0

私はPHPの超初心者ですが、現在最初のWebサイトを構築しており、サイトにユーザーが記入できる連絡先フォームがあり、その情報が電子メールに送信されるようにしたいと考えていました。

そのため、「mail()」関数を使用してこのための PHP を作成しましたが、何らかの理由で、ユーザーが送信を押すと、echo ステートメントでリンクしたページではなく、コードのあるページに移動するだけです。

これが私のPHPです:

<?php 
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$formcontent="From: $name \n Phone: $phone \n Message: $message";
$recipient = "rowan.krishnan@tufts.edu";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
$url = 'contact.html';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">'  
?>

そして、ここに私のhtmlがあります:

<div id="emailform">
   <form action="mail.php" method="POST">
       Name: <input type="text" name="name">
       Email: <input type="text" name="email">
       Phone: <input type="text" name="phone">
       Message: <textarea name="message" rows="6" cols="25"></textarea><br />
       <input type="submit" value="Send"><input type="reset" value="Clear">
   </form>
</div>

私の最後の問題は、私が使用している Web サーバー/ホスト (hostgator) に関連しています。何らかの理由で、PHP を含むドキュメントをアップロードするたびに、500 内部サーバー エラーが発生し、そこで何が起こっているのかよくわかりません。何を言っているのかわかる方がいらっしゃいましたら、アドバイスをいただければ幸いです。

これをすべて読んで助けてくれてありがとう。

4

3 に答える 3

0

;ホワイトページの原因となる可能性が最も高いエコーの最後にa がありません

 echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
                                                           ^

エラーログをチェックして、発生しているエラーを確認し、エラーメッセージをオンにしてみてください

また、メッセージには各行に \r\n が必要です

$formcontent="From: $name \r\n Phone: $phone \r\n Message: $message";
于 2013-04-04T02:53:17.100 に答える
0

これを試してください:

<?php
//
///////////////////////////////////////////////////////////////////////
//  This would be your mail.php file
///////////////////////////////////////////////////////////////////////
//
//
//
///////////////////////////////////////////////////////////////////////
//  Lets Just Check Basic PHP Installation Is Working
///////////////////////////////////////////////////////////////////////
//
if (!function_exists('mail')) {
    die('mail() is not available');
}
//
//
//
///////////////////////////////////////////////////////////////////////
//  Validate Required Passed Fields 
///////////////////////////////////////////////////////////////////////
//
if ( isset($_POST['name']) && $_POST['name'] !='' && isset($_POST['email']) && $_POST['email'] !='' && isset($_POST['phone']) && $_POST['phone'] !='' && isset($_POST['message']) && $_POST['message'] !='' ) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];
}
else
{
    die('Sadly you did not complete all of the fields on our contact form');
}
//
//
///////////////////////////////////////////////////////////////////////
//  Validate The Email... This Is Just An Example
///////////////////////////////////////////////////////////////////////
//
if (preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~]+@([-0-9A-Z]+\.)+([0-9A-Z]){2,4}$/i', trim($email))) {
    die('Email Address Invalid. Please Check Your Email.');
}
//
//
///////////////////////////////////////////////////////////////////////
//  Build Your Email Message
///////////////////////////////////////////////////////////////////////
//
$EmailMessage .= "Name: " . $name . " \n\n";
$EmailMessage .= "Email: " . $email . " \n\n";
$EmailMessage .= "Phone: " . $phone . " \n\n";
$EmailMessage .= "Message: " . $message . " \n\n";
//
//
///////////////////////////////////////////////////////////////////////
//  Build Email Header
///////////////////////////////////////////////////////////////////////
//
$EmailHeader .= "From: " . $name . " <" . $email . "> \n";
$EmailHeader .= "Reply-To: " . $name . " <" . $email . "> \n";
$EmailHeader .= "Return-Path: " . $name . " <" . $email . "> \n"; // running a windows server??
//
//
///////////////////////////////////////////////////////////////////////
//  Send The Email & Confirm It Processed
///////////////////////////////////////////////////////////////////////
//
if (mail('Rowan Krishnan <rowan.krishnan@tufts.edu>', 'Contact Form', $EmailMessage, $EmailHeader)) {
    //
    // it appears to have worked, so redirect somewhere else
    //
    header("Location: contact.php");
    die('Contact Form Redirect');
} else {
    echo('Contact Form Failed');
}
?>
于 2013-04-04T03:46:55.997 に答える
0

php をローカルで実行することはできません。最初に、php がインストールされた Web サーバーを実行する必要があります。xamp を試してみてください。インストールと開始が非常に簡単で、php をローカルで実行できるからです。http://www.apachefriends.org/en/xampp.html

変数を生成した後、単純な php 電子メール スクリプトは次のようになります (これは正しいようです)。

//Generate the email
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= 'From: '. $senders_email;

mail($to, $subject, $message, $headers);

Kai Qing が述べたようにheader('location: contact.html');、ページをリダイレクトするために使用します。echo は、送信したものを画面に表示するだけです。より良いアプローチは、html ドキュメントでコールバック関数を使用することです。たとえば、JavaScript 関数を使用してフォームを送信すると、応答が受信されると (電子メールが送信されます)、コールバック関数が別のページを表示したり、確認メッセージを出力したりします。

jQueryのアプローチは次のようになります

//send form to order.php for further processing
var formData = $('#promo-form').serialize();
$.post('order.php',formData,formSent);
//formSent is the callback funciton

サーバー 500 エラーは、php ファイルに設定された権限が原因である可能性があります。FTP クライアントで、php ファイルのパーミッションが 0644 に設定されていることを確認します。このエラーの詳細については、次の URL を参照してください。

お役に立てれば..

于 2013-04-04T03:14:13.437 に答える