2

タイトルにあるように、私のメールフォームはメール内で「未定義」を送信しています。いくつかのコードから始めましょう...

HTML:

<form action="contactform.php" method="post" enctype="multipart/form-data" name="contact">
        <input name="name" type="text" value="Name" onfocus="if(this.value=='Name') this.value='';" />
        <input name="email" type="text" value="Email address" onfocus="if(this.value=='Email address') this.value='';" />
        <input name="phonemodel" type="text" value="Phone model" onfocus="if(this.value=='Phone model') this.value='';" />
        <textarea name="comments" cols="" rows="" style="height:130px;" onfocus="if(this.value=='Type your message here.') this.value='';" >Type your message here.</textarea>
        <input type="image" name="button" value="Submit" src="../media/btn_play_submit.png" style="margin-right:5px; margin-top:12px;" />
</form>

PHP:

<?php
  if(isset($_POST['name'])) {

    $to = 'MYEMAILHERE';
    $headers = "From: blahblahblah\r\n";
    $subject = "Online Contact Submission Received\r\n";

    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phonemodel'];
    $comments = $_POST['comments'];

    $message .= "Name: " . $name . "\r\n";
    $message .= "Email: " . $email . "\r\n";
    $message .= "Phone Model: " . $phone . "\r\n";
    $message .= "Comments: " . $comments . "\r\n";

    mail($to, $subject, $message, $headers);
  }
?>

私が受け取る電子メールは次のようになります(そして、はい、私はフィールドにテキストを入れています...):

Name: undefined
Email: undefined
Phone Model:
Comments: undefined

私が最初に気付くのは、「電話モデル」は他のモデルのように「未定義」とは言っていないということです。第二に、なぜ他の人は私が入れたテキストの代わりに未定義と言っているのですか?

前もって感謝します。

4

7 に答える 7

4

変更してみる

$message .= "Name: " . $name . "\r\n";

$message = "Name: " . $name . "\r\n";

編集:以下のサンプル:

if(isset($_POST['name'])) {
    var_dump($_POST);
    exit;
于 2012-05-23T20:16:43.710 に答える
1

ヘッダーと件名の後の改行「\r\n」を削除してみてください。メール機能を台無しにしている可能性があります。

$headers = "From: blahblahblah\r\n";
$subject = "Online Contact Submission Received\r\n";

に:

$headers = "From: blahblahblah";
$subject = "Online Contact Submission Received";

がそれを行わない場合は、$_POST 配列をダンプし、フォーム ハンドラーを取得するかどうかを確認します。

于 2012-05-23T20:23:47.217 に答える
1

まず、これらの変数を出力して問題を絞り込みます。正しく印刷されないとき。$_POST['xxx'] -> $_GET['xxx'], method='post' -> method='get' 代わりに GET を使用してみてください。

Web サーバーには、GET や POST を無効にするオプションがあります。構成されていない新しいサーバーでテストしますか?

于 2012-05-23T20:37:24.313 に答える
1

アップデート

HTML と PHP 以外のものを使用して Web サイト / フォームを実行しているようです。PHP または Javascript のいずれかで、スクリプトよりも前にこれに触れる可能性のある他のライブラリはありますか?

オリジナル

ドキュメントに従って送信する場合を除きenctype、フォームを に変更する必要があります。application/x-www-form-urlencodedfiles, non-ASCII data, and binary data

multipart/form-dataそうしないと、奇妙な動作が発生します。少なくとも、それは私の明白な経験でした。

于 2012-05-23T20:40:12.313 に答える
1

上記のすべてのソリューションに加えて、placeholder="text you want to display"inplace ofを使用できますonfocus="if(this.value=='Name') this.value='';"。そこの値に何か問題があったのかもしれません....

于 2012-05-24T05:48:54.090 に答える
0

修正しました。PHPに到達する前に、jQuery、次にAJAXを通過していたことが判明しました。これが、私のすべての問題の原因でした。

これは、プロジェクトに投げ込まれ、それを完全に理解していないときに起こることです。:/

みんな、ありがとう。

于 2012-05-25T19:28:27.987 に答える
0

ローカル ファイルを参照するときは、これらの参照を次の順序で配置します。

  • モバイルのCSS

    jQueryコアのJS

    jQuery モバイルの JS。

場違いだとこのエラーが発生します

正しい:

<script src="jquery-1.7.1.min.js"> 
 <script type="text/javascript" src="jq-all-debug.js"> 

        <script src="jquery.mobile-1.1.1.min.js"> 

間違っています:

        <script src="jquery-1.7.1.min.js"> 

<script src="jquery.mobile-1.1.1.min.js"> 

                <script type="text/javascript" src="jq-all-debug.js"> 
于 2012-11-09T16:45:16.873 に答える