编程语言
首页 > 编程语言> > 如何通过其他应用程序维护PHP会话状态

如何通过其他应用程序维护PHP会话状态

作者:互联网

目标:

维护一起组成整个应用程序的PHP应用程序和Coldfusion应用程序之间的会话状态.

当前方法:

登录我们的Coldfusion应用程序(唯一的登录方式,即无法通过PHP应用程序登录)后,我们使用以下JS代码段调用一个远程PHP文件,该文件设置了PHP会话cookie(无法通过Coldfusion进行设置) ,然后在随后的Coldfusion页面访问中,刷新PHP会话:

<script type="text/javascript">
  // Create an image.
  var imgPing = new Image();
  // Set image src to App A ping url.
  imgPing.src = "http://remotePHPApplicationURL/remoteFile.php";
</script>

登录以维护并行会话时,将在每个Coldfusion页面上加载此代码段.

如果通过非SSL Coldfusion页面调用此方法,则按设计方式工作,但是,包含该应用程序的某些SSL Coldfusion页面.当SSL页面调用此代码段时,我们都会在Chrome检查器中同时收到“内容不安全”警告(这会中断SSL连接)以及“匿名功能”错误.

我们已经尝试过CFHTTP来“获取”这个PHP文件,但是它没有按设计设置PHP cookie.对于使用img.src与使用CFHTTP相比,如何执行PHP文件,我有些不了解.

题:

与确保似乎仅在非SSL情况下起作用的img.src相比,还有另一种更好的方法来调用/执行/ ping PHP文件吗?

这是PHP文件的示例:

<?php
  error_reporting(E_ALL & ~E_NOTICE);
  define('THIS_SCRIPT', 'index');
  define('CSRF_PROTECTION', true);

  $globaltemplates = array();       

  require_once('./global.php');

  $phpapp->session->save();
  setcookie('userid', 'uid');
  setcookie('password', 'pass');
  header("Content-Type: image/png");
?>

解决方法:

您可以使用CFHTTP,但必须像浏览器和远程应用程序之间的代理一样使用它,并手动管理发送和接收的cookie.

我已成功完成此操作,以将用户从ColdFusion登录到phpBB

该过程看起来像这样

> CFHTTP到remoteFile.php
>检查返回的http响应并提取由远程应用设置的cookie
>使用CFCOOKIE在用户浏览器中进行设置

在随后的请求中,您将需要查看应用程序发送的cookie是否存在,以及是否将它们与步骤1中使用CFTTPPARAM的CFHTTP请求一起传递.应用可能设置了一个sessionid或类似的cookie,因此需要发送该id来维护会话.

标签:coldfusion,php
来源: https://codeday.me/bug/20191101/1983281.html