1

一部の PHP ページでは、別の場所からデータをロードし、入力エリアまたはテキストエリアにデータを入力するのが好きです。

html タグが含まれていると問題が発生します。(アポストロフィも) FF では、html は一般的に JavaScript で渡されるのがあまり得意ではないことに気付きました。(エラーコンソール)

可能であれば、これを磨く方法の助けを探しています。

メインページ:

<textarea name="templatetext" id="templatetext"></textarea>

<script language="javascript" type="text/javascript">
$(document).ready(function(){

   /* calls page2.php */
   $.ajax({data:"formId=loadtemplatetext",
        success:function(response){ 
                                    eval(response); 
                                  } 
       });
        return false;
   });

});
</script>

Page2.php

<?php
$templatetext = '<p>This is a test email<br /><br /><br /></p>
<p><span style="color: #808080; font-size: 12px; font-family: Tahoma,sans-serif;"><strong>Some Text here with an apostophe or image: <br /><img title="Test Img" src="http://somefakeurl.com/img/somefakeimg.gif" alt="test img" width="112" height="59" />';

die('$("#templatetext").val("'.addslashes($templatetext).'");');
?>

これは、通常/プレーンテキストでうまく機能します。内部に値を入力するためにこれをクリーンアップでき<textarea>ますか?

4

1 に答える 1

4

これを実行する方法を変更することをお勧めします。クライアント コード内で、新しいコンテンツの行き先を把握するか、クライアント側での解析を容易にするオブジェクトを作成します。例えば

バージョン 1: サーバー固有の処理 (およびクライアント側の処理)

<?php

  $result = array();
  $result['template'] = '<p>this is a test email<br/ >...';
  $result['target'] = '#templatetext';

  echo json_encode($result);

次に、AJAX コードは次のようになります。

$.ajax({
  data:'formId=loadtemplatetext',
  success: function(d){
    $(d.target).html(d.template);
  }
});

バージョン 2: サーバー処理、クライアント処理

<?php

  echo '<p>This is a test email<br />...';

次に、AJAX は次のようになります。

$('#template').load('/page.php?formId=loadtemplatetext');

すべてのコストevalとして使用することに抵抗します。これは、多くのセキュリティ上の脅威につながる可能性があります。

于 2013-01-11T16:32:23.783 に答える