无法使用PHP通过POST提交表单

时间:2009-11-27 00:01:58

标签: ssl https

我似乎无法使用PHP通过POST提交表单。这里是我的代码的快速浏览,谁能告诉我什么是错的?

我的.htaccess文件

RewriteEngine On
RewriteBase /test

RewriteCond %{HTTP_HOST} !^www\.helloworld\.org$ [NC]
RewriteRule ^(.*)$ http://www.helloworld.org/test/$1 [L,R=301]

# If i comment out these 3 lines, everything works fine
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (myaccount|register|registration|login)
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

这是index.php

<?php $myurl = "http://www.helloworld.org".$_SERVER['REQUEST_URI']; ?>
<form method="post" action="<?=$myurl ?>">
<input name="text" />
<input type="submit" />
<?php print_r($_POST); ?>

我采取以下行动:

1)转到http://www.helloworld.org/test/login/(我的浏览器会自动显示https版本)

2)我在表单中输入内容并点击提交按钮

3)print_r($ _ POST)什么都不打印!我预计它会被填充!

如果我注释掉.htaccess文件中与HTTPS相关的三行并重复相同的实验,则print_r($ _ POST)会向我提供表单提交的结果。

如何让我的表格一直在工作?

1 个答案:

答案 0 :(得分:1)

哦,我发现了问题

我的网络浏览器地址显示https://www.helloworld.org/test/login/和https,但我的[form action =“http://www.helloworld.org/test/login”]没有https。当我点击提交时,.htaccess会重定向回https,这可能会破坏POST信息。

所以我所做的只是使用PHP打印相同的http或https协议,将浏览器网址显示在表单标记的操作中。