0

私のPHP連絡フォームスクリプトでは、

エスケープする必要のある引用符を含むPHP変数を送信するために使用_POSTしています。到着すると、その値$formSubjectはフォーム内の変数の値になり、スラッシュが。で削除されstripslashesます。

$formSubject変数とヘッダーを示すフォームからの抜粋を次に示します。

<input type="text" name="formSubject" id="formSubject" value="<?php if(isset($_POST['formSubject']))  echo stripslashes($_POST['formSubject']);?>" />

if (($resp->is_valid) && (!isset($hasError))) {
  $emailTo = 'yourEmail@address.com';
  $subject = 'A new message from: ' . $formAuthor . ' | ' . $formSubject;
  $body = "Email: $formEmail \n\nContent: $formContent  \n\n$formAuthor";
  $headers = 'From: <'.$formEmail.'>' . "\r\n" . 'Reply-To: ' . $formEmail . "\r\n" . 'Return-Path: ' . $formEmail;

エコーされた変数で使用を開始したのでstripslashes、フォームのページの件名は正しいですが、電子メールが到着すると、件名のASCIIが正しく解析されません。

THIS IS A \&#39;SUBJECT\&#39;

する必要があります:

THIS IS A 'SUBJECT'

これは正しいエンコーディングを宣言することの問題ですか?これは私が使い始めたときにのみ発生したstripslashesので、ストリップスラッシュはエンコーディングを無視しますか?<form>設定に使用する属性について読みましたUTF-8が、うまくいきませんでした。ストリップスラッシュに固有の修正はありますか、それともスクリプトエンコーディングに対して行う必要のある全体的な変更はありますか?

誰かが問題が何であるか教えてもらえますか?

ご協力いただきありがとうございます。

4

0 に答える 0