私の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 \'SUBJECT\'
する必要があります:
THIS IS A 'SUBJECT'
これは正しいエンコーディングを宣言することの問題ですか?これは私が使い始めたときにのみ発生したstripslashes
ので、ストリップスラッシュはエンコーディングを無視しますか?<form>
設定に使用する属性について読みましたUTF-8
が、うまくいきませんでした。ストリップスラッシュに固有の修正はありますか、それともスクリプトエンコーディングに対して行う必要のある全体的な変更はありますか?
誰かが問題が何であるか教えてもらえますか?
ご協力いただきありがとうございます。