-1

簡単なコーディングの問題があり、誰かが私のやり方のエラーを見つけてくれることを願っています。

私は連絡先ページhttp://mattmcdougall.ca/contactを持っています。 このページにはフォーム PHP に接続されたフォームがあります。

名前の件名と受信者(私)のみが記載されたメールを受け取ります。フォームで他の情報を取得しません。(電話番号と内容は電子メールに記載されません) また、フォームに記入する人をhttp://mattmcdougall.ca/contactdoneに移動するウェブサイトを希望します。現在、空白の form.php ページに移動します。

ここにフォーム コードと PHP コードがあります。オンラインで見つけたテンプレートを使用したので、PHP をクリーンアップしてください。

<form action="form.php" method="post" class="formtext">
<input name="Name" type="text" value="enter name" maxlength="60"><br>
<input name="Email" value="enter email" type="text"><br>
<input name="Phone Number" value="enter phone#"type="text"><br><br>
<textarea name="Interest" cols="60" rows="10">Interest?</textarea><br><input name="Submit" type="submit" value="Submit"><form

そしてPHP

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Matt McDougall Photography</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<?php
$name = $_POST['name']; //senders name
$email = $_POST['email']; //senders e-mail adress
$phone = $_POST['phone'];
$recipient = "matt@mattmcdougall.ca"; //recipient
$mail_body = $_POST['interest']; //mail body
$subject = "interested client"; //subject
$header = "From: ". $Name . " <" . $email . ">\r\n"; 
mail($recipient, $subject, $mail_body, $phone, $header); //mail command :)
if(mail)
'http://mattmcdougall.ca/contactdone.html';
else
echo "Sorry Something Went Wonky, Please Try Again!";
?>
</BODY>
</HTML>
4

5 に答える 5

1

$_POST 経由で受け取る予定のパラメーターに一致するように、フォーム要素の名前を変更する必要があります。

現在、あなたは(例えば)持っています:

<input name="Phone Number" value="enter phone#"type="text"><br><br>

ただし、名前を付ける必要があります。

<input name="phone" value="enter phone#"type="text"><br><br>

name 属性は、フォームを介して PHP スクリプトに送信されるものです。両側で同じ名前を使用する必要があります。

また、メール関数呼び出しの $phone 変数は何ですか? これらの領域は、$phone だけでなく、追加のヘッダー用に予約されています。次のように、電話番号を $mail_body に連結する必要があります (もちろん、追加のフォーマットを使用します)。

$mail_body = $mail_body . " " . $phone;

これは正しい署名です。

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

編集:これらすべてに加えて、存在しない $Name 変数を使用しようとしているため、 $header も間違っています。$name 変数は存在します。


以下はあなたの問題を解決するはずだと思います。

形:

<form action="form.php" method="post" class="formtext">
  <input type="text" name="name" placeholder="Enter Name" maxlength="60"><br>
  <input type="text" name="email" placeholder="Enter Email"><br>
  <input type="text" name="phone" placeholder="Enter Phone #"><br><br>

  <textarea name="interest" cols="60" rows="10" placeholder="Interest?"></textarea><br>

  <input type="submit" name="submit" value="Submit">
</form>

フォーム.php

<?php
$name = $_POST["name"];
$email = $_POST["email"];
$phone = $_POST["phone"];
$interest = $_POST["interest"];

$to = "matt@mattmcdougall.ca";
$subject = "Interested Client";
$headers = "From: {$name} <{$email}>\r\n";

$mail_body = <<<EMAIL
Name: {$name}
Phone: {$phone}
Message:
{$interest}
EMAIL;

$mail_success = mail($to, $subject, $mail_body, $headers);

if($mail_success) {
  echo "http://mattmcdougall.ca/contactdone.html"; // are you trying to redirect to here?
} else {
  echo "Sorry, something went wonky! Please try again!";
}
?>
于 2013-11-04T04:17:24.327 に答える
1

HTTP POST variables are case sensitive, and the names of the input fields do not match that of those in PHP. <input type="text" name="datanamehere" /> with $_POST["datanamehere"]. Like what other answers said:

HTML:

<form action="form.php" method="post" class="formtext">
<input name="name" placeholder="Full name" type="text" maxlength="60"><br>
<input name="email" placeholder="Email" type="email"><br>
<input name="phone" placeholder="Phone number" type="tel"><br><br>
<textarea name="interest" placeholder="Interested in?" cols="60" rows="10"></textarea><br>
<input type="submit" value="Submit">
</form>

Notice I changed the value to placeholder, and used type="email" and type="tel".

form.php

$name = $_POST['name']; //senders name
$email = $_POST['email']; //senders e-mail adress
$phone = $_POST['phone'];
$recipient = "matt@mattmcdougall.ca"; //recipient
$mail_body = $_POST['interest']; //mail body
$subject = "interested client"; //subject
$header = "From: ". $name . " <" . $email . ">\r\n"; 
if (mail($recipient, $subject, $mail_body, $header))  //mail command :)
    'http://mattmcdougall.ca/contactdone.html';
else
    echo "Sorry Something Went Wonky, Please Try Again!";

As they said, mail() is a function returning a boolean. Wrap it around if to check for success.

于 2013-11-04T04:35:43.573 に答える
0

要素名が PHP コードの名前と一致せず、フォームが を使用して適切に閉じられていません。

<form action="form.php" method="post" class="formtext">
<input name="name" type="text" value="enter name" maxlength="60"><br>
<input name="email" type="text" value="enter email"><br>
<input name="phone" type="text" value="enter phone#"><br><br>
<textarea name="Interest" cols="60" rows="10">Interest?</textarea><br>
<input name="submit" type="submit" value="Submit">
</form>
于 2013-11-04T04:21:30.200 に答える
0

mail は関数なので、単に mail を書いて 'if' でチェックするのはうまくいきません。

代わりにこれを試してください

if(mail()): 
// go to contactdone.html
header('Location: http://www.google.com');
exit();
else:
echo "Sorry Something Went Wonky, Please Try Again!";
endif;
于 2013-11-04T04:30:20.063 に答える
0

あなたが試すことができるいくつかのこと、

  • if(mail)' http://mattmcdougall.ca/contactdone.html ' は何もしません。Header('Location http://mattmcdougall.ca/contactdone.html ')を使用してみてください

  • $_POST を使用するときはいつでも、 [''] 内のパラメーター名は入力名と一致する必要があります (例: <input name="interest" type="text"> would be $_POST['interest'])

  • 入力内にテキストを表示する場合は、値の代わりに placeholder="enter phone#" を使用します。

于 2013-11-04T04:32:03.927 に答える