ページ配列
a.php に 2 次元データがあり、これは b.php
a.php
HTML コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
<form name="loadConfirm" method="post" action="b.php?m=1">
<input type="hidden" name="data[]" value="<?php print_r($arr);?>">//此处如处写啊??有何技巧???
<input type="submit" name="submit" value="导入以上数据/Submit" onClick="return confirm('确定提交吗?/Are you sure?');">
</form>
ログイン後にコピー
b に渡されます。 php
if($_GET['m']){
print_r($_POST['data']);
saveData($_POST['data']);//挿入する関数データベース
}
?>
このメソッドにより、取得された $_POST['data'] は 3 次元配列になります。 ? ?
-----解決策---------シリアル化
シリアル化
問題の回避に注意する必要があります
------解決策---------
------解決策----------------------シリアル化された値を隠しフィールドに渡し、処理のために b.php に渡します。 、unserialize($_POST['data'])//配列として出力されます。
serialize() は文字列を返します。詳細についてはマニュアルを確認してください。
------解決策----------------------if($_GET['m']) {
print_r(unserialize($_POST['data']));//これはデータの整合性を検証するだけです
saveData(unserialize($_POST['data']));//これは
を超えた配列が渡される }
------解決策----------------------シリアル化にはaddslashesエスケープが必要です
値を渡すとき、通常はデフォルト、またはプログラムは、addlashes
を統合し、その効果を確認します。サーバーは必要に応じていくつかのエスケープを削除します
PHP コード
$arr = array("'", "\");
print_r(unserialize(stripslashes(stripslashes(addslashes(addslashes(serialize($arr)))))));
ログイン後にコピー