0

連絡用の簡単なphpフォームがあります。ただし、送信後にメールを送信したり、正しいページに移動したりすることはありません。代わりにmail.phpにリダイレクトします。

contact.phpという名前の私の連絡フォームは次のとおりです。

 <form id="contact-form" action="mail.php" method="POST">
    <fieldset>

        <label><span class="text-form">Your Name:</span> <input type="text" name="name"></label>
        <label><span class="text-form">Your Email:</span><input type="text" name="email"></label>
        <label><span class="text-form">Your Contact No:</span><input type="text" name="contact"></label>
        <div class="wrapper">
            <div class="text-form">Your Message:</div>
            <textarea name="message" rows="6" cols="25"></textarea><br />
            <div class="clear">
        </div>
        <div class="buttons">
        <a class="button" href="#"><input class="button" type="submit" value="Send"></a>
        <a class="button" href="#"><input class="button" type="reset" value="Clear"></a>
        </div>

    </fieldset>
</form>

また、mail.phpという名前のphpコードは次のとおりです。

    <?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    &contact = $_POST['contact'];
    $formcontent="From: $name \n Message: $message";
    $recipient = "info@whatever.co.za";
    $subject = "Contact form message";
    $mailheader = "From: $email \r\n";
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
    header("Location:contact.php");
    ?>

私は何が間違っているのですか。メッセージを電子メールに送信したり、正しいページにリダイレクトしたりしませんか?

4

6 に答える 6

3

あなたの構文は非常にわずかに間違っています。&contact5 行目にあるはずです$contact。運用サーバーを使用していると想定しているため、エラー報告は無効になり、警告は表示されません。

于 2013-02-19T10:57:01.310 に答える
2

メール機能の前に@を使ってみてください

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$contact = $_POST['contact'];
$formcontent="From: $name \n Message: $message";
$recipient = "info@whatever.co.za";
$subject = "Contact form message";
$mailheader = "From: $email \r\n";
@mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
header("location: contact.php");
?>

これにより、メール機能に問題が発生した場合でも合格できます。また、 http://php.net/manual/en/function.headers-sent.php関数を使用して、他のヘッダーが送信されていないかどうかを確認してください。

PHPMailer またはその他のクラスを使用して、あらゆる種類の電子メールを送信することを強くお勧めします。

于 2013-02-19T10:45:25.933 に答える
0

mail.phpを次のように変更します。

<?php
mail("info@whatever.co.za", "Contact form message", $_POST['message'], "From: ".$_POST['name']." <".$_POST['email'].">");
header("Location: contact.php");
?>
于 2013-02-19T10:50:20.197 に答える
0

contact.php から mail.php へのリダイレクトが発生しているかどうか、contact.php ファイルを確認してください。

于 2013-02-19T10:39:16.207 に答える
0

スクリプトの開始時に ob_start() を使用し、exit(); を使用してみてください。after header("場所: contact.php");

このように...

<?php
    ob_start();
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    &contact = $_POST['contact'];
    $formcontent="From: $name \n Message: $message";
    $recipient = "info@whatever.co.za";
    $subject = "Contact form message";
    $mailheader = "From: $email \r\n";
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
    header("Location: contact.php");
    exit();
?>
于 2013-02-19T10:48:23.977 に答える
0

サーバーからのメール送信に問題がある可能性があります。mail.php ファイルがメール機能でつまずき、リダイレクトを行っていない可能性があります。

そこにphpメール機能だけを含む新しいファイルを作成し(電子メールアドレスとテストメッセージを使用)、Webブラウザから閲覧すると送信されますか?

于 2013-02-19T10:42:29.560 に答える