当我将POST表单提交给包含GET参数的链接时,我遇到了问题。
我认为问题来自我的htaccess文件。
这是我的htaccess文件:
Options -MultiViews
RewriteEngine On
RewriteBase /
# do not do anything for already existing files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]
RewriteRule ^create$ create.php [L]
RewriteRule ^delete$ delete.php [L]
RewriteRule ^error$ error.php [L]
RewriteRule ^([\$\.A-Za-z0-9_-]+)$ fetch.php?fetch=$1 [QSA,L]
RewriteRule ^([\$\.A-Za-z0-9_-]+)/make$ fetch.php?fetch=$1&make=do [QSA,L]
RewriteRule ^([\$\.A-Za-z0-9_-]+)/made$ fetch.php?fetch=$1&made=done [QSA,L]
DirectoryIndex index.php
我的POST表单:
<form action="<?=$param->getsite("url")?>/<?=$product_link?>/make" method="post">
<input type="hidden" name="makeit" value="yes">
<input type="hidden" name="another" value="other">
<input type="submit" value="Let's make it" class="btn btn-primary btn-large">
</form>
制作页面(提交到此页面的POST表单):
if(isset($_POST["makeit"]) && $_POST["makeit"] == "yes") {
die("Work !");
}
print_r($_REQUEST);
print_r($_REQUEST);
仅返回[make] => "do"
(GET参数),而不返回POST表单。
答案 0 :(得分:1)
if(isset($_POST["makeit"]) && $_POST["makeit"] == "yes") {
die("Work !");
}
print_r($_REQUEST);
使用此逻辑,$_REQUEST
不包含任何POST
数据的行为正确。你的脚本完全按照你的要求行事。
当请求有POST参数时,它将通过if(isset(...))
测试并die("Work")
。因此,使用POST参数的请求永远不会到达print_r
行。这就是为什么你在那条印刷线上只看到GET参数的原因。
如果您想查看POST参数,请在执行任何其他操作之前进行打印:
print_r($_POST);
if(isset($_POST["makeit"]) && $_POST["makeit"] == "yes") {
die("Work !");
}