0

関数を介して「POST」したいという簡単な連絡がありますが、機能しないようです。

フォームは、アクションを外部の「send.php」ファイルに送信するときに機能しますが、すべてを 1 つのファイルに保持したいと考えています。

<form action="send()" id="contactform" method="POST">
<p>Name<input type="text" name="name">
  Email
  <input type="text" name="email">
  Phone
  <input type="text" name="phone">
</p>
<p>Message
  <textarea name="message" rows="6" cols="25"></textarea>
  <br />
<input type="submit" value="Send">
</p>
</form>

<?php
function send()
{
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$formcontent=" From: $name \n  Phone: $phone \n Email: $email \n Message: $message";
$recipient = "email@email.com";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!";
}
?>
4

8 に答える 8

5

タグからphpコードを呼び出すことはできません<form>。通常、これを同じページへの「ポストバック」として処理し、フォーム変数が設定されているかどうかを確認して、ポストバックが発生したかどうかを判断します。

<form action="" id="contactform" method="POST">

次に、コードで:

if (isset($_POST['name']))
    send();
于 2012-07-31T12:57:14.443 に答える
1

それはPHPの仕組みではありません:)

コードをすばやく修正するには、次のようにします。

  1. send()関数の内容を取得します
  2. 新しい .php ファイルにカット アンド ペーストします (自由に名前を付けてください)。
  3. action="send()"と置き換えますaction="file_you_just_created.php"
  4. テストしてみてください

基本的に、HTML フォームは PHP コードが存在することさえまったく知らず、それを直接参照することはできません。

于 2012-07-31T12:56:24.677 に答える
1

アクション フィールドは、レンダリングされた html の一部になります。これは、「クライアント」の静的または属性であることを意味します。規範によると、これは有効な絶対アドレスまたは相対アドレスでもある必要があります。ただし、空のままにしておくと、ほとんどの場合 (すべてとは言えません) は機能しますが、適切に検証されません。

PHP コードは、Web ページがホストされているサーバー上で機能します。つまり、何かを取得する前に PHP コードが実行され、ブラウザが HTML コードを受け取ります。したがって、コードを送信した後に再度実行する必要があるため、実行するためのページが必要です。

あなたがレストランにいると想像してください。まず、ウェイターに食べ物を注文します。これは、X Web ページに入ろうとしているということです。その後、キッチンで料理が作られます。これは、実行中の PHP コードになります。料理が出来上がると、ウェイターが配達してくれます。これは、情報をダウンロードし、html コードを受け取ることです。好きなように配信されたら変更することもできますが(javascript)、これは質問の範囲を超えています。OPに焦点を当てると、食べ物の配置を変更する(クライアント側で何かをする)と、キッチンですでに行われていることが変更されますか? いいえ、できません。唯一のオプションは、ウェイターに食べ物に必要な変更を伝え(フォームに記入)、キッチンに行って依頼するように丁寧に伝えることです(これは、変更を送信する場所です)。おそらくばかげた例ですが、それは要点です。

他の人のコードがあなたの問題を間違いなく解決するはずなので、コードを入れませんでした.html/PHPをよりよく理解できるように、あなたのコードが機能しなかった理由を説明したかっただけです.

于 2012-07-31T13:12:20.337 に答える
0

Do just this:

<form action="" id="contactform" method="POST">

Or better (valid):

<form action="<?php echo $_SERVER['SCRIPT_FILENAME'] ?>" id="contactform" method="POST">

To catch the data on script check for post data:

<?php 
if (isset($_POST['submit'])) {
    // you should also check if field was filled (strict coding)
    if (isset($_POST['email'])) $email = $_POST['email'];
    ...
}
于 2012-07-31T12:58:47.270 に答える
0
<form action="?" id="contactform" method="POST">
<p>Name<input type="text" name="name">
  Email
  <input type="text" name="email">
  Phone
  <input type="text" name="phone">
</p>
<p>Message
  <textarea name="message" rows="6" cols="25"></textarea>
  <br />
<input type="submit" value="Send">
</p>
</form>

<?php
if ($_POST) {
   send();
}

function send()
{
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$formcontent=" From: $name \n  Phone: $phone \n Email: $email \n Message: $message";
$recipient = "ma9ics@gmail.com";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!";
}
?>
于 2012-07-31T12:57:41.443 に答える
0
<form action="" id="contactform" method="POST">
<p>Name<input type="text" name="name">
  Email
  <input type="text" name="email">
  Phone
  <input type="text" name="phone">
</p>
<p>Message
  <textarea name="message" rows="6" cols="25"></textarea>
  <br />
<input type="submit" value="Send" name="submit">
</p>
</form>

<?php
if (isset ($_POST["submit"]))
{
    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];
    $formcontent=" From: $name \n  Phone: $phone \n Email: $email \n Message: $message";
    $recipient = "ma9ics@gmail.com";
    $subject = "Contact Form";
    $mailheader = "From: $email \r\n";
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
    echo "Thank You!";
}
?>
于 2012-07-31T12:57:47.047 に答える
0

formタグをに変更

<form action="" ... >
    ...
</form>

send()が設定されている場合は、その宣言の後に呼び出します$_POST['message']

このaction属性は、情報を送信する Web ページをブラウザーに伝えるだけです。そこに到達したら、どの関数を実行するかを指示することとは何の関係もありません。

于 2012-07-31T12:55:43.377 に答える
0

HTML フォームのアクション タグを使用して PHP コードを実行することはできません。アクションは、POST 変数を読み取るために実行されるコードを含む PHP ページである必要があります。

于 2012-07-31T12:56:25.967 に答える