ホームページ > バックエンド開発 > PHPチュートリアル > ページ内での配列値の転送の解決策

ページ内での配列値の転送の解決策

WBOY
リリース: 2016-06-13 13:34:49
オリジナル
958 人が閲覧しました

ページ配列
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)))))));
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート