繁体   English   中英

序列化的PHP对象未通过POST传递。

[英]Serialized PHP Object not passing via POST.

     $citation = new Citation();
                    $citation->user_id  =   $result['pmid'];
                    $citation->pmid      =  $result['volume'];
                    $citation->volume    =  $result['volume'];      
                    $citation->issue     =  $result['issue'];       
                    $citation->year      =  $result['year'];        
                    $citation->month     =  $result['month'];           
                    $citation->pages     =  $result['pages'];           
                    $citation->issn      =  $result['issn'];        
                    $citation->journal       =  $result['journal'];     
                    $citation->journalabbrev =  $result['journalabbrev'];   
                    $citation->title          = $result['title'];

                    $string_data = serialize($citation);

HTML

   <input type="checkbox" name="citation" value="<?php echo $string_data; ?>">

POST前$ string_data的输出=

○:8: “引文”:16:{S:7: “USER_ID”; S:7: “8046837”; S:4: “PMID”; S:2: “52”; S:6: “音量” S:2: “52”; S:5: “问题”; S:1: “6”; S:4: “年”; S:4: “1994”; S:5: “月”; S :3: “君”; S:5: “页”; S:6: “1535-8”; S:4: “ISSN”; S:9: “0047-1852”; S:7: “期刊” ; s:51:“ Nihon rinsho。日本临床医学杂志”; s:13:“ journalabbrev”; s:13:“ Nippon Rinsho”; s:5:“ title”; s:46:“ [支气管镜分类结节病] “; S:8:” 抽象 “; N; S:11:” 联系 “; N; S:7:” 作者 “; N; S:9:” 条款ArticleID “; N; S:8:”关键字“; N;}

并且可以反序列化。

                    $new = unserialize($string_data);

                    print_r($new);

给....

引用对象([user_id] => 8046837 [pmid] => 52 [volume] => 52 [issue] => 6 [year] => 1994 [month] => Jun [pages] => 1535-8 [issn] => 0047-1852 [新闻] => Nihon rinsho。日本临床医学杂志[journalabbrev] => Nippon Rinsho [标题] => [结节病的支气管镜分类] [摘要] => [隶属关系] => [作者] => [articleid] => [关键字] =>)

但是当我使用复选框发布到另一个页面,然后

    echo $_POST['citation'];

我懂了

数组([0] => O:8:)

我已经在Stack上搜索了解决方案以及PHP文档,但均未成功。 POST操作会以某种方式更改序列化数据吗?

我认为您应该使用json_encode和json_decode函数

问题解决了。

第一:

      $string_data = serialize($citation);

      $string_data = base64_encode($string_data);

然后使用POST发送$ string_data

然后

      $new_object = unserialize(base64_decode($citation));

另一方面...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM