0

お問い合わせフォームに問題があります。Webサイトに入力すると電子メールが届きますが、受信した電子メールの[名前]、[電子メール]、[メッセージ]のフィールドは空白のままです。

私のコンタクトコンプレックスは次のもので構成されています:(contacts.html私のウェブサイトのhtmlページ); contactengine.php(実際のフォーム); thanks.html(質問が正常に投稿されると開きます); unsuccessful.html(失敗すると開きます)。

このコードの何が問題になっているのか誰か教えてもらえますか?

CONTACTS.HTML

<form id="form" form action="contactengine.php" method="post" >
   <fieldset>
     <label><input type="text" name="cf_name" value="Name" id="cf_name" onBlur="if(this.value=='') this.value='Name'" onFocus="if(this.value =='Name' ) this.value=''"></label>
     <label><input type="text" name="cf_email" value="e-Mail" id="cf_email" onBlur="if(this.value=='') this.value='e-Mail'" onFocus="if(this.value =='e-Mail' ) this.value=''"></label  
     <label><textarea name="cf_message" id="cf_message" onBlur="if(this.value==''){this.value='Message'}" onFocus="if(this.value=='Message'){this.value=''}">Message</textarea></label>
     <div class="btns">
     <a href="contacts.html" class="link-1">Cancel</a>
     <a href="contactengine.php" class="link-1" onClick="document.getElementById('form').submit()">Submit</a></div>
   </fieldset>  
</form>

CONTACTENGINE.PHP

<?php

$EmailFrom = "form@mysite.rs";
$EmailTo = "office@mysite.rs";
$Subject = "Message from website";
$cf_name = Trim(stripslashes($_POST['Name'])); 
$cf_email = Trim(stripslashes($_POST['Email'])); 
$cf_message = Trim(stripslashes($_POST['Message'])); 

// validation
$validationOK=true;
if (!$validationOK) {
   print "<meta http-equiv=\"refresh\" content=\"0;URL=unsuccessful.html\">";
   exit;
}

// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $cf_name;
$Body .= "\n";
$Body .= "e-Mail: ";
$Body .= $cf_email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $cf_message;
$Body .= "\n";

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page 
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=thanks.html\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=unsuccessful.html\">";
}
?>
4

1 に答える 1

0

台詞:

$cf_name = Trim(stripslashes($_POST['Name'])); 
$cf_email = Trim(stripslashes($_POST['Email'])); 
$cf_message = Trim(stripslashes($_POST['Message'])); 

に変更する必要があります

$cf_name = Trim(stripslashes($_POST['cf_name'])); 
$cf_email = Trim(stripslashes($_POST['cf_email'])); 
$cf_message = Trim(stripslashes($_POST['cf_message'])); 

変数名は重要ではありませんが、内部のテキスト$_POST[''] はフォーム要素の名前の値と同じである必要があります。 HTMLの名前の前に。を付けましたcf_が、PHPでは同じことをしませんでした。

編集:おっと、私は何かを逃した!あなたはリンクcontactengine.php<a>リンクしています!ブラウザはこれを通常のGETリクエストとして扱い、データを送信しません。 フォームを送信するためにJavaScriptコードを配置したとしても、ブラウザーのデフォルトのアクション(リンクに移動する)はコードを圧倒します

これを修正するには、

  1. 最後の<a>タグをにcontacts.html変更し<input type="submit" value="Submit" />、リンクを送信ボタンに変えるか、または
  2. 送信リンクのハンドラー; return false;の最後に追加します。onclickこれにより、ブラウザがデフォルトの動作を実行できなくなり、フォームが送信されます。
于 2013-03-19T03:00:12.397 に答える