Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何创建其操作URL与当前URL匹配(并保留GET参数)的表单?_Php_Post_Get - Fatal编程技术网

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).'&'; ?>">