2014-09-22 123 views
0

我近期一直在使用JSON回复进行e3xperimenting。因此,作为一项测试,我创建了一个小型服务来验证另一个域上的用户。这里是我的初步测试的要点:将数据POST到PHP的JSON服务

在域A上,我有一个PHP文件,当用特定的GET变量(URI)调用时会返回一个JSON字符串给调用者。这个想法是我发送用户并传递并返回一个带有变量的json字符串,它表示它已成功登录,用户数据是yes和错误消息case no。

然后我在域B中创建了一个带有javascript和表单的页面。在表单提交时,javascript使用XHR(HTMLRequest)来调用域A中的页面,检索JSON字符串,将其转为对象并取决于结果声明登录与否。

This Works。

在重新思考这个我意识到一些服务这工作正常,但作为登录它不会因为客户会然后声称在域B的网站'嘿我已经登录与域A作为用户C所以你可以相信我' - 而且你绝对不应该相信客户。

所以我改变了一些东西,现在域B中的页面提交用户并传递给域B,域B(PHP中的服务器端)使用file_get_contents从域A获取JSON字符串,并根据它现在是用户现在登录还是不登录。

这也行得通,在我看来好多了。

但是现在我正处于阶段3 - 即使在服务器验证的情况下,我仍然在发送用户并通过URI传递给域A.我希望将其作为POST(或OPTIONS)发送 - 就像不在URI - PHP到PHP,最好是一个组合编码的字符串 - 比如MD5('user:'.$user.':pass:'.$pass)或类似的东西。

创建MD5的字符串很简单,但是如何通过PHP POST然后检索POST的结果作为字符串在PHP中处理?

+1

可能重复[如何发送POST请求与PHP?](http://stackoverflow.com/questions/5647461/how-do-i-send-a-post-request-with-php) – CBroe 2014-09-22 08:41:32

+0

@CBroe在我的搜索错过了一个 - 需要测试那些看看他们是否在我的情况下工作 - 没有在这个问题上接受的答案,但(可能为什么我错过了它 - 首先 - 良好的捕获) - +1导致我到一个可能的答案 – 537mfb 2014-09-22 08:54:55

+0

@CBroe感谢您的链接 - dbau的答案工作得很好 - 再次感谢 – 537mfb 2014-09-23 09:05:37

回答

0

我建议你编写你的PHP代码,假设所有传入的JSON数据编码为UTF-8,因为这是规范中的默认值,肯定是大多数JSON编解码器的默认值。

尽管在您的API文档中明确指出UTF-8application/json的内容,但这是一个好主意。如果客户想要以不同的方式传输JSON,请指示他们通过一个不同的Content-Type标题来指定非默认编码,并使用如下标头:Content-Type: application/json;charset=UTF-16

+0

这与我的问题没有关系,因为我问如何通过POST发送而不是GET。至于你的观点,服务页面正在使用UTF-8,不会使用其他任何东西。它不会像JSON那样接收数据 - 只能回答JSON - 虽然它可能也会以JSON的形式获取请求(或者不是当前状态) - 即使不回答问题本身也是好的 - 谢谢 – 537mfb 2014-09-22 09:28:21