【やりたいこと】
ユーザーがPOSTしたarrayデータをDBに保存し、保存したデータをWEBページに表示する際、arrayデータをforeachで回したいと思っています。
【問題】
ユーザーがPOSTしたarrayデータは、そのままではDBに保存できなかったので、serializeしてからDBに保存しました。
そして、そのデータをWEBページに表示する際、arrayデータをforeachで回すために、unserializeを使おうと考え、以下のようなコードを考えました。
<?php $array = serializeしてからDBに保存されたarrayデータをSQL文で取得 // 上記の$arrayをunserializeする $array = unserialize($array); foreach( $array as $key => $value ){ $html .= $key.'は'.$value.'です。<br>'; } echo $html; //ページに出力 ?>
しかし、unserializeのマニュアルページ(https://www.php.net/manual/ja/function.unserialize.php)に、以下のように書かれていました。
============================
ユーザーからの入力をそのまま unserialize() に渡してはいけません。 アンシリアライズの時には、オブジェクトのインスタンス生成やオートローディングなどで コードが実行されることがあり、悪意のあるユーザーがこれを悪用するかもしれないからです。 シリアル化したデータをユーザーに渡す必要がある場合は、安全で標準的なデータ交換フォーマットである JSON などを使うようにしましょう。 json_decode() および json_encode() を利用します。
============================
私はJSONに関する知識が浅く、内容がよく理解できず、手が止まってしまいました。
つまり、上記に書いた私のコードは、危険ということでしょうか。
だとしたら、私はどのようにして「安全に」ユーザーがPOSTしたarrayデータを、その後、ページにforeachで出力すればよいのでしょうか。JSONを使用するとありますが、具体的にどのようにJSONを使えばよいかわからず、途方にくれております。
どなたか、道しるべを頂けましたら幸いです。
何卒、よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/19 10:34
2020/05/19 11:19 編集
2020/05/19 11:21