Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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
Java HTML表单提交双URL编码从%20到%2520_Java_Php_Html_Forms_Hyperlink - Fatal编程技术网

Java HTML表单提交双URL编码从%20到%2520

Java HTML表单提交双URL编码从%20到%2520,java,php,html,forms,hyperlink,Java,Php,Html,Forms,Hyperlink,我正在使用数据库中的数据创建一个简单的下拉表单。在下拉菜单中,我向用户显示选项,并对每个选项的值进行URL编码,以便在提交时将空格呈现为%20以传递超链接。但是,在提交表单后,它似乎将我的空间从%20编码到%2520(%20再次编码)。这会在我的网站上创建指向同一内容的不同超链接,这不是最优的,因为这些链接与我在别处引用同一内容时使用的%20个链接不同 我回显了选项值以测试它,它似乎是正确的,并且在表单中存储为%20。就我的一生而言,我无法理解表单提交会导致值再次被编码。感谢您的帮助 我正在使用

我正在使用数据库中的数据创建一个简单的下拉表单。在下拉菜单中,我向用户显示选项,并对每个选项的值进行URL编码,以便在提交时将空格呈现为%20以传递超链接。但是,在提交表单后,它似乎将我的空间从%20编码到%2520(%20再次编码)。这会在我的网站上创建指向同一内容的不同超链接,这不是最优的,因为这些链接与我在别处引用同一内容时使用的%20个链接不同

我回显了选项值以测试它,它似乎是正确的,并且在表单中存储为%20。就我的一生而言,我无法理解表单提交会导致值再次被编码。感谢您的帮助

我正在使用PHP从我的数据库和BootstrapV3.0中提取值,如果这有什么不同的话

表格代码:

<form name="topitems" id="topitems" action="best-items.php" method="get">
    <strong>Best Items:</strong><br>
    <select name="items" id="items" onChange="document.topitems.submit()"> 
      <option value="option1">Select an Item</option>
<?php
   require ('start_connection.php'); // Connect to the db.
   // Make the query:
   $query = "SELECT DISTINCT items FROM table WHERE displayed = 'Yes' ORDER BY items ASC";      
   $results = @mysqli_query ($dbc, $query); // Run the query.

   if ($results) { // If it ran OK, display the records.

    while($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
       echo "<option value=".rawurlencode($row[items]).">" . $row['items'] . "</option>";

}?>
     </select>
</form>
<?php
    mysqli_free_result ($results); // Free up the resources.    
  }
?>

最佳项目:
选择一个项目
实际上,被激发的请求将再次编码您的文本/url。因此,
空间
的html编码是
%20
%
的html编码是
%25
。因此,我希望您将获得的url为
%2520
,而不是
%20

因此,要解决此问题,请删除已完成的手动编码,并让请求处理编码


我希望它清晰明了,对你有用

因此,在表单提交时,GET请求似乎会对传递给URL的值进行编码(这导致了双重编码)。有没有办法防止这种情况发生RFC1866,第46页;HTML 4.x第17.13.3节)状态:如果方法为“get”,操作为HTTP URI,则用户代理将获取操作值,向其附加一个“?”,然后附加表单数据集,使用“application/x-www-form-urlencoded”内容类型进行编码。我的另一个解决方法是将每个项目的整个url写入选项值,但每次动态生成的代码似乎要多得多。我在站点的静态链接上使用了%20,因此除了%20之外,最好不要将HTTP URI请求的+与GET结合使用。