欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php处理post原始数据问题(在线等)

程序员文章站 2022-04-26 13:23:58
...
XX软件,去连接hxxp://www.test.com/input.php
当通信连接好后这个XX软件就发送一个文本文件比如:abc.txt
然后php运算后,反回一段jason串给这个软件,最后软件运行相应的功能。

如果这个XX软件发送abc.txt(内容verify,deny,not commit等信息),php运算后就返回{"id":xxx,"url":"xxx","port":"xxx"}


这样的php应该怎么写呢?

我尝试使用php://input接收abc.txt,但接收后应该怎么处理,以及处理后怎么返回jason格式的串?

请高手指点,感谢!

回复讨论(解决方案)

那要看你收到的都是什么
还要看你打算从收到的内容中加工出什么

php收到的文件信息会存在$_FILE全局数组里面,然后通过move_uploaded_file把txt文件移到服务端,接着用file_get_contents得到txt里面的内容,然后对内容处理,产生json,最后echo该json

xx软件 发送数据到 php处理页面 然后该怎么写就怎么写
你php不会写 还是软件端不会写?delphi?

是对php不太熟悉,软件端会写,不过已经有思路了,感谢楼上几位的回复。

是对php不太熟悉,软件端会写,不过已经有思路了,感谢楼上几位的回复。
json的话php有自带函数,生成了想要的json后,echo出去就好。接受的内容就是对php://input进行字符串处理,处理成你想要的。

使用php://input接收到post过来的abc.txt文件后,需要读取文件第二行至第五行,与服务器上的kkk.txt文件内容对比(username,localhost),并返回true或flase,使用file()函数将abc.txt文件读入数组后怎么比较呢,还请指点。
abc.txt文件内容:
verify:local
username:1111
localhost:2.2.2.2
username:2222
localhost:2.2.2.2
test.com

kkk.txt文件内容:
username:1111
localhost:2.2.2.2
username:2222
localhost:2.2.2.2

使用php://input接收abc.txt
这你已经实现了,假定读到的数据在 $inp 中
$inp = preg_split("/[\r\n]+/", file_get_contents('php://input'));
$ing = array_slice($inp, 1, -1);//斩头去尾


你还是把你的需求在说明一下吧

谢谢xuzuning,我已经将xx软件post过来的abc.txt文件保存到服务器当前路径下了:file_put_contents('abc.txt',$input);
打算使用file()函数将abc.txt文件再读入数组,依次与服务器上的kkk.txt文件对比,如果abc.txt文件中的username、localhost与kkk.txt文件中的username、localhost数据一致,返回true,否则返回flase.

全部对应?还是只要存在就算?
比如
username:1111
localhost:2.2.2.2
username:2222
localhost:3.3.3.3

username:2222
localhost:2.2.2.2
username:1111
localhost:3.3.3.3

早啊,只要存在就算

是否是只要 kkk.txt 的所有行,都在 abc.txt 中出现了就可以?
而不管 abc.txt 可能还有其他内容的行?

既然客户端和服务器端都可控,文本不大的话不必上传,直接在客户端发送一个post请求就行
php只需要用$_POST就能接收了

是否是只要 kkk.txt 的所有行,都在 abc.txt 中出现了就可以?
而不管 abc.txt 可能还有其他内容的行?


是的,就是这个意思

$t = array_diff(file('kkk.txt', FILE_IGNORE_NEW_LINES), file('abc.txt', FILE_IGNORE_NEW_LINES));


感谢xuzuning,我再试试。