ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-11-01 11:31:13  阅读:200  来源: 互联网

标签:coldfusion 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有