1

Web サイトに連絡先フォームを作成し、受信トレイに情報を送信するように書いていますが、まったく機能していません。以下の私のコードを見て (PHP は私のものではありません)、どこが間違っているのか教えてください。

PHPスクリプトは次のとおりです。

<?php

$to = 'example@gmail.com';
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$tel = $_POST['tel'];
$project = $_POST['project'];
$range1 = $_POST['range1'];
$range2 = $_POST['range2'];

$body = <<<EMAIL

Hi, my name is $name.

I'd like to discuss the possibility of working together on a $project.

My budget for the project is £$range1 and I would like to complete the project within $range2 Month(s).

Additional Information:
$message

Regards, $name

<hr>
$name
$email
$tel

EMAIL;

$header = "From: $email";

if($_POST['send']){
mail($to, $subject, $body, $header);
$feedback = 'Thank you for your message, we will get back to you shortly.';
}

?>

HTML フォームは次のとおりです。

<form id="form_id" name="form_name" action="" method="post">

  <div>
<input type="text" name="name" id="name" placeholder="Name" required/>
  </div>
<div>
<input type="email" name="email" id="email" placeholder="Email" required/>
  </div>
<div>
<input type="tel" name="tel" id="tel" placeholder="Phone" required/>
  </div>

<div>
  <select required id="project">
<option selected>Select type of project…&lt;/option>
<option value="Responsive Website">Responsive Web Design</option>
<option value="Graphic Design">Graphic Design</option>
<option value="Motion Graphics">Motion Graphics</option>
  </select> 
</div>

  <div>
<label for="range1">Budget: </label>
<input type="range" name="range1" id="range1" min="400" max="2000" step="50" value="6" required onchange="rangevalue.value=value"><output id="rangevalue">400</output>
  </div>

<div>
<label for="range2">Timeframe: </label>
<input type="range" name="range2" id="range2" min="1" max="12" step=".5" value="1" required onchange="rangevalue1.value=value"><output id="rangevalue1">1</output>
  </div>

<div>
<label for="message">Additional Information: </label><br/>
<p>(Please use this space to tell us about your company, the main objectives of the proposed website and anything else you think might be useful)</p>
<textarea name="message" id="message" rows="5" cols="30" placeholder="Message" required></textarea>
  </div>

<div>
<input type="submit" name="submit" value="submit" />
  </div>

</form>
<p id="feedback"><?php echo $feedback; ?></p>

助けてくれてありがとう。参考までに、これは Contact Form 7 (または同様のプラグイン) を介して WordPress で簡単に実現できます。

4

2 に答える 2

1
<input type="submit" name="submit" value="submit" />

この行を次のように変更する必要があります。

<input type="submit" name="send" value="submit" />



  if($_POST['send']){ 

送信ボタンがクリックされたかどうかを実際に確認しています...

そして、はい - html と php が異なるページにある場合は、適切なフォーム アクション リンクを設定する必要があります...

于 2013-06-04T23:58:54.390 に答える
1

これまたはこれを見てみるべきだと思います.W3Schoolsはユーザーフレンドリーな例のために基本的なチュートリアルとして役立つかもしれませんが、常に他のリソースで補完することに注意してください.

次に、この回答を見てください。これは、自分が行っていることすべてを理解するための基礎が必要だからです。

フォームにあなたの $_POST['send'] 名が表示されないか、遅すぎて疲れています:

わかりませんが、送信前にフォームにこれが必要な場合があります。

<input type="hidden" name="send" >

それで:

私はすでにこの回答をここに投稿しましが、ここにあります:

まず、欠落しているいくつかのヘッダーがそれらを見てると思います

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

メール関数を呼び出すときに、その真か偽かを 2 番目に確認します。

if( mail($email_to, $email_subject, $email_message, $headers)!==true)
    {
        die('Fail to send');


    }
    die('Success');

    }

isset()関数を見て、 すべての変数がフォームから設定されていることを確認してください。

于 2013-06-04T23:56:26.080 に答える