a253910322
a253910322
采纳率100%
2017-07-27 02:42

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 free_ant 4年前

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

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

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

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

    点赞 评论 复制链接分享
  • a253910322 a253910322 4年前

    结帖了 就想上面大神说的那样,因为存储的不是同一个SESSION所以取不到数据,使用memcache能够实现原来的需求

    点赞 评论 复制链接分享