2009-11-20 3 views
6

テキストフィールド内で '' '(二重引用符)を使用するにはどうすればいいですか...'input type = "text"'値で二重引用符を使用すると、文字列が二重引用符で終わります!

フィールドで値を二重引用符で囲むと私のPHPファイルは:

$text=mysql_real_escape_string($_POST['subject']); 

し、それをエコー、私は適切にエスケープされた文字列を取得しますが、文字列は、私はそれが原因で停止したいいけない二重引用符

前に正確に停止します!しかし二重引用符!

Javascriptは、テキストフィールドを検証するために使用されるので、空ではないかもしれません。おそらく、検証時にjavascriptで何かを行う必要があります。値を変更すると、phpは二重引用符を含む正しい値を取得できますか?

おかげ

UPDATE

CODE:私は上記の二つをマージしようとしている

$headline= mysql_real_escape_string($_POST['headline']); 
    echo htmlentities($headline); 

、必ず同じ結果が得られます。 注:

+ , . ; : - _ space & % ! ? = # * ½ @/\ [ ]< > " ' hej hej 

が出力されます、これはそれをエコーする場合:

+ , . ; : - _ space & % ! ? = # * ½ @/\\ [ ]< > 
+0

JavaScriptを使用しないでください。とにかくサーバー側でやってはならないことは何もしません。 –

答えて

20

あなたが使用する必要が入力されたように私も...にhtmlentities関数に

未フォーマット文字列をENT_QUOTESを追加しようとしていますhtmlspecialchars($str, ENT_QUOTES)またはhtmlentities($str, ENT_QUOTES)を入力して、引用符をHTMLエンティティ&quot;に変換します。これらの関数は、エンコードされるべき他の文字も処理します。

mysql_real_escape_string()は、データベースクエリでシングルクォートをエスケープするためのものです。そのため、データベースにシングルクォートの文字列を正しく入力できます(SQLインジェクションを避けることができます)。

EDIT:パラメータを追加しました。おかげでmicahwittman

+0

二重引用符は表示されません。バックスラッシュのみが表示されます...更新プログラムplzを読む –

+0

htmlentitiesのオプションの2番目のパラメータを次のように使用する必要があります:echo htmlentities($ headline、ENT_QUOTES);これは二重引用符と一重引用符もエンコードします(ENT_QUOTES以外の特別な定数はhttp://php.net/manual/en/function.htmlentity.phpを参照してください)。また、mysqlデータベースに文字列を格納する準備としてsql_real_escape_string()を使用するだけでなく、\が\\になっている理由もあります。 – micahwittman

1

それは入力文字列を変更するJSの仕事ではなく、サーバーはそれが無関係なものを受け入れることを確認する必要があります。

mysqlエスケープ関数に渡す前に、別の値Assci symbolまたはHTML &quot;などで二重引用符をエスケープできますか?

3

inputに出力するときに機能しないのは、valueが引用符で切り捨てられているためです。出力にhtmlspecialchars()を使用する必要があります。

2

あなたは2つのことを混ぜています:mysql_real_escape_stringは、mysqlデータベースに格納する文字列を準備するために使用されます。 htmlentitiesは、ブラウザでエコーする文字列を準備するために使用されます。どちらも重要ですが、同じ文字列で順番に呼び出すことはできません。次のような操作を行います。

// Copy string after escaping for mysql into $db_headline 
$db_headline= mysql_real_escape_string($_POST['headline']); 

// Copy string after escaping for page display into $html_headline 
$html_headline = htmlentities($_POST['headline']); 

// Store the headline in the database 

... 

?> 
<input type="text" name="headline" value="<?php echo $html_headline ?>" /> 

... 
関連する問題