2016-09-12 8 views
0

これは重複する可能性がありますが、助けてくれたものが見つかりませんでした。なぜ私のunserializeは空に戻りますか?

フォームのpostメソッドを通して、すべてのデータの配列を別のページに渡そうとしています。これは次のようになります。

ここで、私は$ _SESSIONデータをシリアライズします。これは、それは次のようになります。

value="a:1:{s:12:"dpi_strategy";a:1:{s:5:"Plan1";a:1:{i:0;a:9:{i:0;s:3:"PCR";i:1;s:11:"Description";i:2;s:4:"Task";i:3;s:8:"Resource";i:4;s:13:"Baseline Plan";i:5;s:10:"Trend Date";i:6;s:4:"User";i:7;s:20:"Data Inicialização";i:8;s:6:"Status";}}}} 

そして、ここで私はアンシリアライズ場所です:

しかし
$Excel_array = htmlentities(unserialize($_POST['excel_array'])); 

、それはnullを返します。何故ですか?

+1

私はそれを得ることはありません。あなたはセッション変数をシリアル化し、別のページ/スクリプトでそれを解凍しますか?他のページのセッション変数にアクセスするだけです – Andreas

+0

$ _POSTデータに変換したいので、別のタブを開いたときに置換されません。 – RazorFinger

+0

置換されません。他のページのセッションデータにアクセスするだけです。それを試してみてください。 – Andreas

答えて

1

を使用するアンシリアライズされますので、アンシリアライズからにhtmlentitiesを削除します。

第2に、私は、ユーザから提出されたデータをシリアライズしてシリアル化解除するデータを出力することをお勧めしません。その理由は、コードの挿入がセキュリティの重大な問題であるためです。

代わりにjson_encode()json_decode()を使用してください。 あなたの配列に特別な文字があるのが分かります。Data Inicializaçãoあなたは実際にそれらの文字を別のエンティティに変換するのは間違いありませんが、すべてがUTF-8であれば動作します。

<input type='hidden' name='excel_array' value='<?php echo json_encode($_SESSION['excel_array']) ?>'> 

そして:

# ../resource_load/export.php 
var_dump(json_decode($_POST['excel_array']); 
+0

私は別のページを開き、結果として別のページを開いた後でもこれらの情報を保持したいので、$ _POST情報に変換しますセッション。 – RazorFinger

+0

セッションはCookie IDで動作しますが、ブラウザを閉じるとセッション内のデータはそのまま残ります。クッキーが期限切れになるか、クリーンアップツールを使用してクッキーが削除されるまで、これは成立します。別のブラウザから開くと、新しい要求として処理され、新しいセッションが開始され、他のブラウザのデータはそのまま維持されます。 – Xorifelse

+0

私はこれを正しく説明していないと信じています。セッションデータをエクスポートするので、同時にさまざまな「セッション」を開く必要があります。私はタブを使ってセッションを分けることができないので、代わりにexport $ _POSTデータをExcelに使用しようとしています。 – RazorFinger

0
<?php 

    $temp = array(); 
    $temp['aaa'] = "aaaaaaaaaaaaaaaaaaaaaaa"; 
    $temp['bbb'] = "bbbbbbbbbbbbbbbbbbbbbbb"; 
    $temp['ccc'] = "ccccccccccccccccccccccc"; 

    $arr = array(); 
    $arr['excel_array'] = $temp; 


?> 

<form method="post" action=""> 
    <input type='hidden' name='excel_array' value='<?php echo htmlentities(serialize($arr['excel_array']))?>'> 
    <input type='submit' class='submit' id='btnExport' value='Export to Excel' /> 

</form> 


<?php 


if(isset($_POST['excel_array'])) { 
    echo "<pre>"; 
    $Excel_array = unserialize($_POST['excel_array']); 
    print_r($Excel_array); 
} 


?> 

あなたはアレイとはhtmlentitiesあなたがこれを行う場合は、値を復号化するためにエンコードするhtmlentities()html_entity_decode()を使用した文字列

関連する問題