2012-01-05 12 views
1

フォームを使用して別の場所でホストされているイメージをユーザーが追加できるユーザー入力用のフォームがあります。画像は小さなアイコンとして表示されます。小さなアイコンはリンクであり、ホバリング時に積み重ね順+1で画像をdivにロードします。イメージソースアドレスは、リンクタグにのみ格納されます。jQueryを使用してユーザー入力のすべてのイメージタグのソースを確認する方法

<div />contenteditable=trueを入力しています。フォームが使用されると、アイコンが追加されます。この部分のコードは正常に動作します。私がしたいのは、すべての画像タグのソースを調べて、ユーザーが独自のHTMLを追加していないことを確認して、フルサイズの画像を投稿に表示することです。

バックエンドでphpを使用してリンクや画像以外のタグをすべて削除していますが、jQueryを使用して投稿前に画像タグのsrcを確認したいと思います。

<a href="image_source.jpg"><img src="my_icon" /></a> //this is what my form will input 

<img src="anything_else"> //this is what I want to prevent 

更新:これがはっきりしない場合はお詫び申し上げ上げます。基本的に、私はユーザーが自分のHTMLを入力できるようにしたくありません。彼らは画像を追加したい場合は、上記のようなものを挿入する私の組み込みのフォームを使用する必要があります。その後、

$('.postimage').each(function(){ 
    alert($(this).attr('href')); 
}); 
+3

**あまりにも多くのテキスト**。簡単な例でそれを視覚化する。 –

+0

これは非常に安全な解決策ではありません。精通したユーザーは、jQueryスクリプトを迂回することができるからです。 – zrvan

+0

私はまだその質問を理解していません。良い入力と悪い入力の例を挙げることができますか? – jfriend00

答えて

1

すべての画像へのリンクを警告します。

$("img").each(function(index) { 
    if ($(this).attr("src") == ...) { 
     // do something 
    } 
} 

は、より多くの情報のためhttp://api.jquery.com/each/http://api.jquery.com/attr/を参照してください。

var srcs = []; 
jQuery ('div#editor img').each (function() { 
    srcs.push (jQuery (this).attr ('src')); 
}); 

srcs<div id="editor" />タグで提供<img /> - タグからすべてのsrc -attributesを開催します:

+0

興味深いことに、ユーザー入力のimgタグも認識しません。 – buck54321

+0

私は自分の答えを更新しました。 – scessor

+0

私は両方を試しました。あなたの最初の例はもっと近かった。ユーザー入力タグは認識されませんでしたが、フォームによって入力されたタグを認識しました。私の推測では、これはcontenteditable divと関係があるということです。これ以上のアイデアは? – buck54321

1

あなたは可能性があり、画像をループし、src属性を確認してください:特にあなたのサイト次のコードのための

1

たちはjQueryのスクリプトは次のようなものが見える<div id="editor" />を持っていると言います。

1

私は答えがあります。ユーザーが<または>をcontenteditable = "true" divに入力すると、ブラウザはそれらをhtml表記&lt;および&gt;に置き換えます。良いニュースは、ユーザーのコメントを出力するときに画像が表示されないことです。悪いニュースは、上記のjQueryベースのソリューションは、醜いコーディングを削除するために動作しませんということです。私はそれを行うためにPHPを使用して終了しました

$post = $_POST['comment']; 
$imgcheck = true; 
$stringstart = 0; 

while($imgcheck == 'true'){ 
    if($stringstart = strpos($post,'&lt;img',$stringstart)){ 
     if ($stringend = strpos($post,'&gt;',$stringstart)){ 
      $strlength = $stringend - $stringstart +4; 
      $substring = substr($post,$stringstart,$strlength); 
      if (!preg_match('~src="\/images\/ImageLink.jpg"~',$substring)){ 
       $post = str_replace($substring, "", $post); 
      } 
      else{ 
       $stringstart = $stringend; 
      } 

     } 
     else{ 
      $imgcheck = 'false'; 
     } 
    } 
    else{ 
      $imgcheck = 'false'; 
    } 

} 
関連する問題