Php 如何创建其操作URL与当前URL匹配(并保留GET参数)的表单?
特别是,我有一个表单,它有一些参数要提交给自己,但我想在提交表单时保留Php 如何创建其操作URL与当前URL匹配(并保留GET参数)的表单?,php,post,get,Php,Post,Get,特别是,我有一个表单,它有一些参数要提交给自己,但我想在提交表单时保留GET参数 例如,如果原始URL为http://mydomain.com/download.php?fname=foobar.bin,我希望它成为我发布帖子时的URL。但是URL的foobar.bin部分可能会更改 下面是一个最低限度的工作示例 <?php $pass = $_POST['pass']; $filename = $_GET['p']; $file = "../../cgi-secret/$filen
GET
参数
例如,如果原始URL为http://mydomain.com/download.php?fname=foobar.bin
,我希望它成为我发布帖子时的URL。但是URL的foobar.bin
部分可能会更改
下面是一个最低限度的工作示例
<?php
$pass = $_POST['pass'];
$filename = $_GET['p'];
$file = "../../cgi-secret/$filename";
if($pass == "foobar")
{
header('Content-type: application/octet-stream');
header("Content-Disposition: attachment; filename=\"$filename\"");
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
// The PDF source is in original.pdf
readfile($file);
}
if(isset($_POST))
{?>
<form method="POST" action="download.php?p=$file">
Password <input type="password" name="pass"></input>
<input type="submit" name="submit" value="Get File" ></input>
</form>
<?}
?>
密码
在这一行,我想发布到当前的URL,不管发生什么
<form method="POST" action="download.php?p=$filename">
为了提供一些上下文,我试图修改我问题的答案
这样我就可以将文件名作为GET
参数传递。您看到$\u服务器['QUERY\u STRING']
了吗?除了在渲染表单时循环现有的$\u GET
数组之外,这可能是最简单的方法
例如:
<form method="POST"
action="download.php?p=$filename&<?php echo $_SERVER['QUERY_STRING']; ?>">
我还没有看到,我会尝试一下。我只是尝试了一个带有echo$\u服务器['QUERY\u STRING']的简单页面代码>并且它没有打印任何内容。如果PHP在CGI bin下执行,这个变量是否存在?请参阅修订答案-您应该考虑预先计算查询字符串而不是生成MID模板。(我想,)使用空的操作属性提交到当前URI,包括查询字符串。code>
(我认为)你是对的,但是我认为@merlin2011想要添加到现有的查询字符串中,而不仅仅是发布到同一个查询字符串中。
<form method="POST"
action="download.php?p=$filename&<?php foreach($_GET as $key => $val) echo $key.'='.urlencode($val).'&'; ?>">