2016-10-10 5 views
1

さらに別の作りの考えはので、私はこの方法を使用してきた...要求し、さらに別のPHPファイルは私に迷惑です取得:html入力タグの値にphp変数を渡すのは悪い習慣ですか?

<input class='hidden' id='dataIwant' value=' <?php echo $_SESSION["bigObjectArray"] ?>" /> 

は、この悪い習慣ですか?どう思いますか?

+1

2つのことを忘れないでください:1:値はできるが、「 '含ま'とHTMLを破る、2:フォーム – mmm

+0

で送信されるようにする前に、この隠しフィールドの値は、ユーザーによって変更することができるが配列 '$ _SESSION [" bigObjectArray "]'? – AHJeebon

答えて

0

私は、この例では、自分自身のために話すと思う:

<?php 
session_start(); 
$_SESSION['bigObjectArray'] = "\" /><script>alert('Hi!')</script><input type=\"hidden"; 
?> 
<input class="hidden" id="dataIwant" value="<?php echo $_SESSION["bigObjectArray"] ?>" /> 

出力:

<input class="hidden" id="dataIwant" value="" /><script>alert('Hi!')</script><input type="hidden" />

あなたが響いているデータを検証し、フィルタリングすることを確認します。 は、常にです。

0

エスケープしないと(htmlentitiesまたはhtmlspecialchars)、それは悪いことです。

ユーザーがこのフィールドを変更する必要がない場合、悪い習慣です。

SESSIONが保存されているため、マルチタブブラウジングの悪い習慣です(並行ページの書き込み/読み取りに失敗します)。

値をhtmlでエスケープした場合、ユーザーがそのフィールドを変更できる場合(治療ページで確認した場合)、その値をSESSIONに保存しないようにするとよいでしょう。

1

IMHOでは、セッション変数がクライアント側で表示される危険性があります。ユーザーがすでに知っている索引、文字列などの一部のみがユーザーに表示されます。セッション変数にユーザーパスワード、セッショントークンなどが含まれている場合は、非表示にする必要があります。

ご質問について、このデータを使用する場所が変わると変更されます。フォーム内で別のPHPページに渡すためだけのものであれば、これを行う必要はありません。これはフォーム処理ページで引き続き利用できます。

クライアント側のjavascriptコード内で使用する場合は、json_encodeしてjavascript変数に割り当てることができます。

<script type="text/javascript"> 

    var myBigJSON = <?php echo json_encode($_SESSION["bigObjectArray"]);?>; 
    var myBigArray = $.parseJSON(myBigJSON); 

</script> 
関連する問題