【问题标题】:How do I force HTTPS on a some pages? (PHP)如何在某些页面上强制使用 HTTPS? (PHP)
【发布时间】:2019-03-16 07:20:33
【问题描述】:

我有一个处理信用卡处理的 PHP 文件。它以输入信用卡号的表格开始,然后变成“确认”屏幕(显示信用卡号),然后再次处理并显示结果。所有三个加载都将通过 PHP 提交完成(我意识到确认可能比 Javascript 更好,但我没有编写它)。它是目录中唯一处理信用卡的文件,因此它是唯一需要httpS连接的文件。

我尝试使用 $_SERVER 数组强制执行此操作,从 SCRIPT_URI(或其他条目)的前缀查找用于连接的协议,但没有前缀。

有没有一种简单的方法可以做到这一点...我想在 5 页主页上使用 ssl,登录,注册,联系页面,如果用户访问其他页面,那么他应该使用非 ssl 版本

抱歉这些问题,但到目前为止我在这里的搜索还没有找到可行的解决方案,恐怕我不知道最佳做法是什么。

【问题讨论】:

  • "因此它是唯一需要 httpS 连接的" — 只需通过 SSL 推动整个站点。它更简单,它可以保护您的用户可能关心的数据,即使您不关心,也可以为您提供更好的 SEO。
  • 除了@quentin 提到的真实情况外,您还应该看看http 服务器的重写功能,例如mod_rewrite 用于apache http 服务器。它允许您重定向单个或多个请求,例如在协议方案之间切换。
  • 拜托(拜托!)如果您提供信用卡号,您需要绝对确定您遵守 PCI 法规。关于你做什么有非常严格的规定。 HTTPS 只是这些规定的一小部分。您需要确保您的软件、服务器和流程符合 PCI 标准。

标签: php ssl


【解决方案1】:

在您想要的 php 页面上使用此代码:

if($_SERVER["HTTPS"] != "on")
{
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
    exit();
}

【讨论】:

    【解决方案2】:

    您应该调查 $_SERVER['HTTPS']。如果使用 https,这将有一个非空值,否则将有一个空值。

    如果您检测到非 https 连接,您可以重定向用户,例如使用 php header() 方法。

    实现此目的的另一种方法是使用 .htaccess 配置(如果您在 apache Web 服务器上运行):

    RewriteCond %{HTTPS} !=on
    RewriteRule ^creditcard\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
    

    对整个网站使用 https 也是一个非常好的选择。

    【讨论】:

      【解决方案3】:

      假设您要将 4 个特定页面重定向到 https,

      • page1.php
      • page2.php
      • page3.php
      • page4.php

      那么你会做这样的事情:

      在你的根目录中创建一个 .htaccess 文件,并在其中添加以下行。

      Options +FollowSymlinks
      RewriteEngine On
      RewriteBase /
      
      #redirect www.yourdomain.com to yourdomain.com (or any other subdomain)
      RewriteCond %{HTTP_HOST} !^yourdomain.com$ [NC]
      RewriteRule ^(.*)$ http://yourdomain.com/$1 [L,R=301]
      
      #force https for certain pages    
      RewriteCond %{HTTPS} !=on
      RewriteRule ^(page1\.php|page2\.php|page3\.php|page4\.php)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-22
        • 2014-01-22
        • 2014-05-05
        • 2010-11-15
        • 2023-03-05
        • 2011-08-08
        • 2015-07-30
        • 2011-10-25
        相关资源
        最近更新 更多