我们有一个遗留(php)应用程序,接受文件上传,它们存储在路径中,具体取决于会话ID。现在我们必须为这个webapp提供一个非常简单的API,通过iOS api(iPad)执行文件上传。我们返回一个客户将在嵌入式webkit窗口中打开的URL。
由于上传和查看操作的会话不同,我们想抓住会话参数并将其从文件上传的响应中返回。然后客户端被重定向到该URL,我们将会话ID设置为先前的id并继续到客户可以继续工作的页面。
显然,我没有尝试过任何作品。我们使用Zend Framework 1,但这并不重要。我试过了:
setcookie("PHPSESSID", $session, 3600)
设置PHPSESSID setHeader('Set-Cookie', 'PHPSESSID=....', true)
最后两个选项没有做任何事情,比如我根本没有设置会话。我怎么解决这个问题?实际上,我们无法触及遗留的代码库,以修改其工作方式并更改路径解析的方式,以便上传文件。
所以,流程是: 请求api.myapp.tld - >身体中的字符串响应 - >打开webkit窗口,将此响应字符串作为位置 - >请求被执行 - >使用重定向标头的响应以及将Cookie设置为不同的方法 - > Webkit执行重定向 - >客户访问的页面具有与api.myapp.tld的第一个请求相同的会话ID。
如果有替代方法来设置会话ID,那就太棒了。
答案 0 :(得分:0)
调试并不简单,但你有一些选择。我不熟悉Zend Framework 1.x,所以这不是特定于框架的(框架有时候会添加内容),但是特定于PHP。
在PHP中,会话由两件事来识别:
答案 1 :(得分:0)
我最后得到了一些更简单的东西。会话与此/path/to/location/ . $sessionId
之类的路径相关。当第二个会话启动时,我只是将目录从旧会话重命名为新会话。简单快速地完成这项工作。