如何在某些页面上强制使用HTTPS? (PHP)

时间:2015-11-13 10:15:57

标签: php ssl

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

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

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

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

3 个答案:

答案 0 :(得分:0)

您应该调查$ _SERVER [' HTTPS']。如果使用https,则此值为非空值,否则为空值。

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

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

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

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

答案 1 :(得分:0)

假设您要将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]

答案 2 :(得分:0)

在所需的php页面上使用此代码:

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