0

Stackoverflow を検索したところ、同様の問題がいくつか見つかりましたが、答えを理解できませんでした。私は 2 日前に PHP を学んだばかりなので、どうぞお手柔らかにお願いします。

私の問題は、ユーザーがテキストを書き込んでファイルに送信するためのフォームを使用していることです。送信を押すと、テキストがファイルに書き込まれ、次にフォームにアクセスしたときにテキストがフォームに残って変更できるようになります。問題は、何らかの形式の見積もりを入力して送信すると、その前に \ が追加されることです。

例: ユーザーは次のように書き込みます: "hello" ユーザーが送信を押す フォームがリロードされ、"hello" が \"hello\" として出力されます。

\ は引用符などをキャンセルして文字列として出力できることを知っていますが、 $_POST を使用してフォームデータを保存し、引用符を使用するたびに \ を使用しないことは可能ですか?

私はPHPの初心者なので、説明を詳しくしてください。前もって感謝します。私の問題を引き起こしているコードは次のとおりです。

echo '<div class="wrap">';

// makes an if statement to check if the submit button has been pushed
if ( isset( $_POST['Submit1'] ) ) { 

// opens the include file and writes the contents of "left-form" to the file. left-form is the name of the html text area

$file = fopen($_SERVER['DOCUMENT_ROOT'] . '/wp-content/themes/mytheme/options/index_left.php', "w");
fwrite($file,$_POST["left_form"]);
fclose($file);

}

echo '<p><form method="POST" action=""><textarea rows="4" cols="50" name="left_form">';
// includes the contents of the file being written to as the text inside the text field
include $_SERVER['DOCUMENT_ROOT'] . '/wp-content/themes/mytheme/options/index_left.php';
echo '</textarea></p>';
echo '<input type="submit" value="Submit" name="Submit1"></form>';


// sets an if statement to check if the post button has been hit to display a message that it has been posted
if ( isset( $_POST['Submit1'] ) ) {
echo htmlspecialchars($_POST["left_form"]) . '</br>HAS BEEN POSTED';
}

echo '</div>';

}

4

1 に答える 1

1

htmlspecial chars は \ を追加して一部のシンボルをエスケープし、stripslashes() でラップします。

echo stripslashes(htmlspecialchars($_POST["left_form"])) . '</br>HAS BEEN POSTED';

編集:

あなたのコメントに応えて、テキスト入力が mysql のようなデータベースに保存されている場合は、mysql_real_escape_string() 関数と stripslash() を使用してみてください。それ以外の場合は、htmlspecialchars() 関数なしでこれを試しましたか?

于 2013-11-01T18:51:24.407 に答える