转移到HTTPS后丢失$ _POST数据

时间:2019-02-02 10:20:48

标签: php https url-redirection

自从在.htaccess中设置重定向后,我已经实现了强制执行WWW的目标。并删除所有.php扩展名。但是,我认为使用https无效,因为我的$ _post现在提交表单时为空。请帮忙。

更新-我认为可以使用HTTPS。我删除了我的.htaccess代码的后两行,该行涉及删除php扩展名,并且我的表单可以再次使用。所以现在的问题是,如何在不丢失$ _POST数据的情况下删除网站上的php扩展名。 -更新

我尝试在.htaccess的%{SERVER_PORT} 80和%{HTTPS}之间切换!

这是我的.htaccess代码:

DirectoryIndex index.php
Options +FollowSymlinks
RewriteEngine on
Rewritecond %{HTTP_HOST} ^example.co.uk [NC]
#Tried using... Rewritecond  %{SERVER_PORT} 80
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.example.co.uk/$1 [L,R=301,NC]
# This hides the php extensions
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

这是我的表单标记:

<form autocomplete="off" name="productRequest" enctype="multipart/form-data" action="<?php echo "..".$_SERVER['PHP_SELF']."?item=".$item."&amp;design=".$design."&amp;option=".$option."&amp;add=Y"; ?>" method="POST">

请注意,我也尝试过https://www.example.co.uk。$ _ SERVER ['PHP_SELF']

当表单调用自身时,我有:

$item = $_GET['item'];
$design = $_GET['design'];
$option = $_GET['option'];
$add = $_GET['add'];

if(!isset($item))
    {
    header('Location: ../index.php');
    exit;
    }
else if($add=='Y')
    {
    print_r($_POST);
    exit;
    }

我刚得到:Array()

1 个答案:

答案 0 :(得分:1)

POST数据未被重定向后重新发送。 这项功能非常有用,可以在计算发布数据后(例如,在上传文件以显示统计信息之后)启用重定向。

解:改变<form>到https