重新发布$ _POST数组

时间:2016-05-13 19:49:55

标签: php arrays post recursion

我有一个脚本,在用户接受之前预览输入的数据,它需要重新发布表单数据,以便最终处理它,一些数据是以数组形式和数据形式。我找了一个有效的功能来执行我找不到的功能,所以我创建了这个:

    function repost_array ($value, $key, $mkey) {
            echo draw_hidden_field($mkey.'[' . $key . ']', htmlspecialchars(stripslashes($value)));
    }   
    /* Re-Post all POST'ed variables */
    reset($_POST);
    while (list($key, $value) = each($_POST)) if (!is_array($_POST[$key])) echo draw_hidden_field($key, htmlspecialchars(stripslashes($value)));
    reset($_POST);
     while (list($key, $value) = each($_POST)) if (is_array($_POST[$key]))  array_walk_recursive($_POST[$key], 'repost_array', $key);

请告知是否有更好的方法或错过了什么(我没有测试递归功能的深度)。

1 个答案:

答案 0 :(得分:1)

您可以重新发布这些值,但我建议使用其他替代方法,例如$_SESSION超级全局,类似于:

<?php
session_start();//session start has to be at the very top of your page!
?>

<!-- ... your html code  -->

<?php 

// ... your php code...

$_SESSION['key'] = $_POST['key']; 

从那里,您可以在代码中的任何位置使用$_SESSION['key']来获取存储的值(只要会话处于活动状态,这取决于您的配置通常大约30分钟但可以更长,例如7天)