【问题标题】:https form validation not passing SESSION VARIABLES - PHPhttps 表单验证未通过会话变量 - PHP
【发布时间】:2009-09-16 00:36:26
【问题描述】:

我的表单流程运行良好,但在将表单操作重命名为

<form action="https://www.example.com/validate.php" method="post">

使用 SSL 证书时它停止工作。似乎 SESSION 变量不再被正确传递...

关于 https 和表单有什么我应该知道的吗? 如果我保持表单操作路径相对它可以正常工作,但我的表单会安全吗?

【问题讨论】:

  • 表单动作路径必须是相对的吗?
  • @relative 或不是问题:它们可以是相对的,也可以是绝对的。如果您从 HTTP 发布到 HTTPS,则需要输入一个绝对地址,从而更改协议。
  • 但是从 https 发布到 https 可以是相对的吗?
  • 例如。 site.com/form.php 发布到同一文件夹中的validation.php,该文件夹重定向回site.com/form.phpsite.com/complete.php
  • 在我的特定场景中,它实际上是不允许创建 SESSION 变量的 https。

标签: php validation forms ssl https


【解决方案1】:
  1. 调试cookies是否发送到HTTP 站点也被发送到 HTTPS 站点或 不是。
  2. 您的 HTTPS 服务器是否可以 首先加载?也许 配置不正确或 东西。
  3. 如果是相对路径,就不会被保护,因为你的页面是不安全的。
  4. 您可以尝试在安全的 HTTPS 服务器上使用此表单加载页面,然后进行回发。 (即安全 -> 安全)

接下来,您可能希望将非安全页面的会话 ID 传递给安全页面。

例如在表单页面:

<form action="https://www.example.com/validate.php" method="post">
<input type="hidden" value="<?php echo session_id(); ?>" name="sid" />

在回发页面:

session_id($_POST['sid']);

您应该能够重新连接到会话。希望有帮助。

【讨论】:

  • 哦,我以前从未尝试过,可能会也可能不会。但一切顺利。请让我知道会发生什么=)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 2012-04-30
  • 2014-02-03
  • 2011-12-07
相关资源
最近更新 更多