0

ゲストへのハイパーリンクをブロックするために2時間から解決策を見つけようとしていますが、うまくいきません.

テキスト コンテンツはデータベースから読み込まれ、HTML 形式でレンダリングされます。すべてのリンク ユーザーは、プレーンな http:// 形式またはアンカー タグを追加すると、自動的にリンクに変換されます。

ゲスト ユーザーからすべてのハイパーリンクを非表示/ブロックしたい。私はあなたの大きな助けが必要です..本当に立ち往生しています。

この配列を使用してデータベースからコンテンツを取得しています$data['content']。これは html コンテンツです。

4

1 に答える 1

0

コードを見たり、コンテキストについて詳しく知らなくても、状況に合わせて調べて適用するものがあります。このコードを demo.php などのファイルに入れ、コマンド ラインで実行します。

<?php

$text_with_links[] = 'http://example.com';
$text_with_links[] = '<a href="http://example.com">Link</a>';

echo "User text:\n\n";
foreach ( $text_with_links as $text_example ) {
    echo "\t${text_example}\n";
}

echo "\n\n";

echo "Use text filtered by htmlspecialchars:\n\n";
foreach ( $text_with_links as $text_example ) {
    echo "\t" . htmlspecialchars( $text_example ) . "\n";
}

echo "\n\n";

echo "Use text filtered by strip_tags:\n\n";
foreach ( $text_with_links as $text_example ) {
    echo "\t" . strip_tags( $text_example ) . "\n";
}

次のように表示されます。

$ php demo.php 
User text:

    http://example.com
    <a href="http://example.com">Link</a>


Use text filtered by htmlspecialchars:

    http://example.com
    &lt;a href=&quot;http://example.com&quot;&gt;Link&lt;/a&gt;


User text filtered by strip_tags:

    http://example.com
    Link

これは、2 つのコア PHP 関数、htmlspecialchars および strip_tags の使用を示しています。ここでこれらのドキュメントを読んでください:

これらの関数のどちらもユーザー エントリ " http://example.com "を変更しないことに注意してください。「すべてのリンクのユーザーがプレーンな http:// 形式のいずれかを追加すると、自動的にリンクに変換されます」と言うと、省略している途中でプロセスが発生していると思われます。文字列「 http://example.com 」をページに単純に印刷しても、通常は HTML アンカー タグとしてレンダリングされません。

他の人がコメントしているように、最高のヘルプを得るには、stackoverflow.com のガイドラインに従い、問題に関連するすべての詳細とコンテキストを提供し、これまでに試したコードを印刷して、他の人が修正してより良いアイデアを得ることができるようにする必要があります。あなたが扱っているものの。

使用しているフレームワークまたは CMS について言及してください (いずれかを使用していると思われます)。Drupal、Joomla、Wordpress など。

当面は、 str_replace() - http://www.php.net/manual/en/function.str-replace.phpを使用して、データベースから取得するすべての文字列から「http://」を単純に削除できます。しかし、それは最善の解決策ではありません。あなたが使用しているソフトウェアは、"http:// 形式" のテキスト (あなたの言葉を使用するため) を HTML アンカー タグに変換していると思います。たとえば、Drupal を使用していて、ゲストがアクセスできる Web フォームを提供している場合は、フォーマットを「完全な HTML」からより限定的なものに変更する必要があります。そうしないと、匿名ユーザーが HTML をデータベースに入力できるようになります。PHP コード ソリューションはまったく必要ない場合があります。

また、Google で「PHP の XSS 攻撃を防ぐ」および「SQL インジェクション PHP を防ぐ」必要があります。これは、安全な Web サイトを持ちたい場合に行う必要がある調査です。

幸運を。詳細をお知らせいただければ、私や他の方がより具体的なサポートを提供できます。


編集:読みやすくするために、以下のコメントに書いたものを印刷します:

$content_tags_stripped = strip_tags( $data['content'] );

また

$content_no_htmlspecialchars = htmlspecialchars( $data['content'] );

次に、$data['content'] の代わりにこれらの変数をコードで使用します。

しかし、時間があれば、私が書いた残りの部分を読んでください。そうすれば、問題に対するより満足のいく解決策を見つけることができると思います。幸運を。

于 2013-07-07T21:08:54.270 に答える