a253910322 2017-07-27 02:42 采纳率: 100%
浏览 2233
已采纳

Python向PHP发送POST数据,PHP收到之后如何保存?

这个是Index.php界面,他的作用只有一个,将session中的内容显示出来。

 <?php
    session_start();
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
            var_dump($_SESSION);
        ?>
        <a href="ShowSession">ShowSession</a>
    </body>
</html>

这是第二个界面OnPostMessage.php,他的作用是接收Python的POST请求,并把接受到的数据设置到SESSION中

 <?php
session_start(); 
$loginright = array();
foreach($_POST as $key=>$val)
{
    global $loginright;
    $loginright[$key] = $val;
}
$_SESSION['loginright'] = serialize($loginright);
print_r($_SESSION);

第三个界面ShowSession.php 作用也是将SESSION显示出来

 <?php
session_start();
var_dump($_SESSION);

最后一个文件: SendPost.py这里用Python函数 想第二个界面OnPostMessage.php发送POST数据

 import urllib
import urllib2

import httplib
import json

test_data={'ServiceCode':'aaaa','b':'bbbbb'}
test_data_urlencode=urllib.urlencode(test_data)
requrl="http://localhost/PhpProject2/OnPostMessage.php"
req=urllib2.Request(url = requrl,data =test_data_urlencode)

res_ddd=urllib2.urlopen(req)
res = res_ddd.read()
print res

原本希望实现的现象
1. 首先启动 这个PHP程序,界面默认在Index.php这个界面上。
2. 这时候因为没有设置任何SESSION,所以显示出来的SESSION内容也是空的
3. 在这个时候 使用 SendPost.py 想第二个界面OnPostMessage发送POST请求. 第二个界面收到发送的数据之后 将他设置到SESSION中
4. 最后将PHP界面跳转到ShowSession界面上,将SESSION打印出来。

现在遇到的问题:
1. 为什么最后界面ShowSession什么都显示不出来呢? 在上面第三步的时候已经把内送设置到SESSION中了,而且可以在Python函数中捕获到SESSION中设置的值。

这个现象是不是从根本上就错了? 如果错了。想要实现这个需求应该怎么错呢?如果不把数据写文件或者写数据库的话。

  • 写回答

2条回答 默认 最新

  • free_ant 2017-07-27 03:18
    关注

    服务端是通过客户端传过来的sessionID,来获取session数据的,通常浏览器会通过cookies把sessionid传到服务端(也可以手动设置),这是前提;

    而你这段代码,服务端是接收到了数据并存储了;

    但你再访问ShowSession.php页面时,你所携带的sessionid和你通过python设置时的sessionid不同,

    所以session中对应的你这个sessionid无数据

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 求恶意流量检测系统搭建教程( C++ python C)
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
  • ¥15 io.jsonwebtoken.security.Keys