問題タブ [htmlspecialchars]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - htmlspecialchars はフォーマットを削除します
クラスの別の関数内で htmlspecialchars 関数を呼び出していますが、これを行うと、データが表示されても、データを 1 行で表示するすべての書式設定が削除されます。
これはコードです:
htmlspecialchars 関数への参照を削除すると、データが表示されます。
アップデート:
これは私が適用したcssです:
$row['cQuotes'] および Author 変数内に html はありません。htmlspecialchars が実装されたときに削除されるのは css フォーマットです。
私が気付いた別のことは、私が削除した場合ENT_QUOTES
、それは機能しますが、再びそれを使用すると、フォーマットが削除されるということです。これはなぜですか?
php - PHP を使用して HTML コードをプレーン テキストで出力するようにフォーマットする
データベースからユーザーが送信した HTML コードを取得する次の関数があります。
のように呼びますecho code($query->row('html'));
。私の質問には「深さ」が欠けていることはわかっていますが、これが最善の方法ですか? または、出力されたフォーマットが解析されたり (Javascript インジェクションなど)、一部のマシンで正しく出力されなかったりする可能性はありますか?
ありがとう!
ジャック
編集: 新しい (関連する) 質問があります: を使用して文字列を強調表示したいと思いますhighlight_string()
。しかし、私はそれを適切に機能させることはできません。理由は理解できたと思いますが、これを修正する方法がよくわかりません。
ご覧のとおり、私はhighlight_string()
それをすべて使用しています。ただし、出力はまったく強調表示されず、代わりに文字エンティティ ( <
、「>」など) として出力されます。関数の順序を次のように変更すると、次のようになります。
return "<pre><code>".nl2br(htmlspecialchars(highlight_string($code)))."</code></pre>";
文字エンティティは出力されていませんが、文字列はまだ強調表示されていません。明確にするために、適用されるテキストの色に影響を与える CSS 書式設定もありません。また、PHP の設定を確認したところ、強調表示の色が確実に指定されています。
php - フォームを確保するには?
ユーザーがメッセージを追加できるフォームがあるため、フォームのセキュリティに関する記事を読んでいました。
strip_tags()
、htmlspecialchars()
およびを使用するのが最適であると読みましたnl2br()
。他のどこかで を使用すると言われていますhtml_entity_decode()
。
ユーザー入力を受け取るページにこのコードがあります
しかし、メッセージをエコーすると、すべてが1行になり、改行がによって削除され、strip_tags
元に戻されないように見えnl2br()
ます。
ブレークが削除された場合、それをどこに戻すか (またはそれを行うか) をどのように知るのでしょうか?
とにかく、フォームでjavascriptを使用するなど、サイトをハッキングしようとするためにフォームを保護できる方法を探しています。
php - htmlspecialchars(): 引数のマルチバイト シーケンスが無効です
ローカル サイトでこのエラーが発生しています。
誰が知っていますか、問題は何ですか、またはこれに対する解決策は何ですか?
ありがとう。
php - UTF-8 文字列を使用しようとすると、PHP htmlspecialchars() 関数エラーが発生する
私は次のことをしました:
- データを含むスプレッドシートがあります。行の 1 つに ü 文字が含まれています。
- これを CSV ファイルとして OpenOffice.org に保存します。文字エンコーディングを尋ねられたら、UTF-8 を選択します。
- Navicat を使用して MySQL データベース テーブル、InnoDB を UTF-8 utf8_general エンコーディングで作成し、CSV をインポートします。
- 特別なü文字を含む文字列
htmlspecialchars($string, ENT_COMPAT, 'UTF-8')
であるPHP関数を使用しようとしました。$string
エラーが表示されます: Invalid multibyte sequence in argument。で変更'UTF-8'
すると'ISO8859-1'
、エラーは発生しませんが、間違った文字が表示されます。(「未知の文字」文字は、のように見えます<?>
)
HTML フォームを使用してデータベースの文字列を更新すると、エラーが消えて文字が正しく表示されますが、Navicat でレコードを見ると、2 つの文字のように見えます。
[1/4][A with some thing on top of it]
1文字とは見なされないマルチバイト。
何が起こっているのか、どこで問題が発生しているのか、それに対して何ができるのか?
php - How to replace - with – using php
How do i replace -
with –
using php htmlspecialchars()
$content = $_POST['content'];
php - htmlspecialchars を介した EUC-jp の XSS
日本語の文字セット euc-jp は xss を作成しますか?
次に、パラメータ a を %f0 として取得します。
私はそれから悪い気持ちを持っています
例を挙げていただけると嬉しいです
php - HTMLpurifierがマークダウンでPHPの短縮構文の例をエスケープしないようにするにはどうすればよいですか?
私はマークダウンとHTMLpurifierを使用しており、マークダウン<?= $variable ?>
コードに(インデント構文を使用して)省略形のPHP()の例を入れたいのですが、HTMLpurifierはタグ<
を許可された要素として認識せず、エスケープしています。
HTMLpurifierでこれをエスケープするのを防ぐために有効にする必要がある構成オプションはありますか?
php - php XML DOM は特殊文字を &#xYY; に変換します。
これを AJAX POST で送信します。
XML を作成するには、次のようにします。
そして私はこれを得る:
¿Dónde habré olvidado... mi memoria?
に変換:
XML に元の文字が必要です。これらは有効な utf-8 であり、このエンコードの理由がわかりません :(