2016-12-05 129 views
0

我试图在php会话中存储大量POST数据。数据似乎保存没有任何问题,但是当我尝试访问下一页加载的数据时,它未被设置。我不知道我在做什么错。这是最小工作实例,我可以使:会话变量未设置

的index.php
<?php 
session_start(); 
$_SESSION['roles'] = $_POST['ext_roles']; 
var_dump($_SESSION); 

session.php文件
<?php 
session_start(); 
var_dump($_SESSION); 

当我让POST到index.php,示出了数据按预期:

/var/www/default/index.php:4: 
array (size=1) 
    'roles' => string '00000000000000000' (length=17) 

,但是当我加载session.php,我得到这个:

/var/www/default/session.php:3: 
array (size=1) 
    'roles' => null 

它不会发生在所有的数据,只是我真正关心的数据。如果我只是使用邮递员提交随机POST数据,它的工作方式与预期的一样,但从我试图保存的外部源进入初始POST的数据始终设置为null或空数组。我在这里完全失败。

这里是我试图与会话持久化表单数据:

form.html

<html> 
<body> 
<form action="index.php" method="post"> 
    <input type="hidden" name="oauth_consumer_key" value="00000000000000000"/> 
    <input type="hidden" name="oauth_signature_method" value="00000000000000000"/> 
    <input type="hidden" name="oauth_timestamp" value="00000000000000000"/> 
    <input type="hidden" name="oauth_nonce" value="00000000000000000"/> 
    <input type="hidden" name="oauth_version" value="00000000000000000"/> 
    <input type="hidden" name="context_id" value="00000000000000000"/> 
    <input type="hidden" name="context_label" value="00000000000000000"/> 
    <input type="hidden" name="context_title" value="00000000000000000"/> 
    <input type="hidden" name="custom_canvas_api_domain" value="00000000000000000"/> 
    <input type="hidden" name="custom_canvas_assignment_id" value="00000000000000000"/> 
    <input type="hidden" name="custom_canvas_assignment_points_possible" value="00000000000000000"/> 
    <input type="hidden" name="custom_canvas_assignment_title" value="00000000000000000"/> 
    <input type="hidden" name="custom_canvas_course_id" value="00000000000000000"/> 
    <input type="hidden" name="custom_canvas_enrollment_state" value="00000000000000000"/> 
    <input type="hidden" name="custom_canvas_user_id" value="00000000000000000"/> 
    <input type="hidden" name="custom_canvas_user_login_id" value="00000000000000000"/> 
    <input type="hidden" name="ext_ims_lis_basic_outcome_url" 
      value="00000000000000000"/> 
    <input type="hidden" name="ext_outcome_data_values_accepted" value="00000000000000000"/> 
    <input type="hidden" name="ext_outcome_result_total_score_accepted" value="00000000000000000"/> 
    <input type="hidden" name="ext_outcomes_tool_placement_url" 
      value="00000000000000000"/> 
    <input type="hidden" name="ext_roles" 
      value="00000000000000000"/> 
    <input type="hidden" name="launch_presentation_document_target" value="00000000000000000"/> 
    <input type="hidden" name="launch_presentation_locale" value="00000000000000000"/> 
    <input type="hidden" name="launch_presentation_return_url" 
      value="00000000000000000"/> 
    <input type="hidden" name="lis_course_offering_sourcedid" value="00000000000000000"/> 
    <input type="hidden" name="lis_outcome_service_url" 
      value="00000000000000000"/> 
    <input type="hidden" name="lis_person_contact_email_primary" value="00000000000000000"/> 
    <input type="hidden" name="lis_person_name_family" value="00000000000000000"/> 
    <input type="hidden" name="lis_person_name_full" value="00000000000000000"/> 
    <input type="hidden" name="lis_person_name_given" value="00000000000000000"/> 
    <input type="hidden" name="lis_person_sourcedid" value="00000000000000000"/> 
    <input type="hidden" name="lti_message_type" value="00000000000000000"/> 
    <input type="hidden" name="lti_version" value="00000000000000000"/> 
    <input type="hidden" name="oauth_callback" value="00000000000000000"/> 
    <input type="hidden" name="resource_link_id" value="00000000000000000"/> 
    <input type="hidden" name="resource_link_title" value="00000000000000000"/> 
    <input type="hidden" name="roles" value="00000000000000000"/> 
    <input type="hidden" name="tool_consumer_info_product_family_code" value="00000000000000000"/> 
    <input type="hidden" name="tool_consumer_info_version" value="00000000000000000"/> 
    <input type="hidden" name="tool_consumer_instance_contact_email" value="00000000000000000"/> 
    <input type="hidden" name="tool_consumer_instance_guid" 
      value="00000000000000000"/> 
    <input type="hidden" name="tool_consumer_instance_name" value="00000000000000000"/> 
    <input type="hidden" name="user_id" value="00000000000000000"/> 
    <input type="hidden" name="user_image" 
      value="00000000000000000"/> 
    <input type="hidden" name="oauth_signature" value="00000000000000000"/> 
    <button type="submit" name="submitButton">Go</button> 
</form>  
</body> 
</html> 
+0

是什么样的数据呢?删除了一个。给我们一个样本。 –

+0

我看到的一件事情可能会导致这种情况,一开始就是'session_unset()'。这将意味着它再次被调用''session.php'的负载,但是这可能导致这种情况。 – Nytrix

+0

@Nytrix我尝试过,没有'session_unset()'。真正的代码中没有'session_unset()'。 –

回答

0

尝试改变:

$_SESSION['post-data'] = $_POST; 

到:

if ($_POST) $_SESSION['post-data'] = $_POST; 

否则,后数据将g用任何$ _GET调用将其设置为空数组。

+0

你确定这会行吗? – Irvin

+0

尚未对其进行测试,但看起来可能是问题所在。 – nbrogi

+0

这确实有效。有人可以告诉我为什么这有效吗?数据应该在执行索引期间存储在会话中。php',那么我不明白为什么它是一个帖子在'session.php'执行过程中有任何意义。 –