在我的示例中如何使用 urlencode()?
Posted
技术标签:
【中文标题】在我的示例中如何使用 urlencode()?【英文标题】:how to use urlencode( ) in my example? 【发布时间】:2013-02-07 17:07:15 【问题描述】:我检查了php.net
并阅读了一些关于urlencode( )
工作原理的示例,但不知何故我就是无法正确理解。有人可以帮帮我吗?
示例内容很多,希望我的简短示例能说得通。
我有一个名为2.php
的页面,它被调用来显示在1.php
中选择的.txt
文件的一些内容。
我被告知要为3.php
创建一个链接,该链接应该类似于/3?filename=a.txt
文件名为GET
参数名称并确保GET
参数值为urlencoded
使用urlencode( )
函数。
但我很困惑我应该如何以及在哪里放置 urlencode()
以使其工作。
我将我的 2.php 代码粘贴在这里...我简化了代码...
<?php
$fileContents = file("./aaa/" . $_GET["course"] . ".txt");
echo "<table border=\"1\">";
foreach($fileContents as $row)
echo "<tr>";
$contents = preg_split("/,/", $row);
foreach($contents as $eachline)
echo "<td>";
if(!(preg_match("/@/", $eachline)))
echo trim(ucfirst($eachline));
else
echo trim(strtolower($eachline));
echo "</td>";
echo "</tr>";
echo "</table>";
echo "<a href='./1.php'>Choose another txt file</a><br/>";
echo "or<br/>";
echo "<a href='.3.php?'>Work with this txt file</a>";
?>
但是……3.php 选项必须附加一个查询字符串:在 1 中选择的文本文件的名称,因此 url 应该是 ./3 之类的东西,而不是 ./3.php ?filename=asdf.txt
使用“文件名”作为 GET 参数名称。确保使用 urlencode( ) 函数对 GET 参数值进行 urlencoded。
但我只是不确定如何让它工作....
【问题讨论】:
请注意,如果处理不当,此系统可能容易受到远程文件包含的影响 粘贴了....但稍微简化了一点,所以没有太多可阅读的内容,但希望仍然能够理解 请注意,使用 php 读取文件名可能是一个安全问题。考虑以下示例:/3?filename=.htpasswd
或 /3?filename=../../etc/passwd
或 /3?filename=../any.php
在所有情况下,您都可以读取用户不应该看到的任意信息。我希望我把这个例子说得够清楚了
【参考方案1】:
您可以将函数中应该进行url编码的部分包装在字符串中:
$url = 'http://www.google.com?q=' . urlencode($search);
OR in html
http://www.google.com?q=<?php echo urlencode($search); ?>
.
是 2 个输出的串联。
【讨论】:
但是 $search 怎么样?那应该是什么?比如输出是什么?哦,我们可以在链接中添加回声吗? (对不起,我对 php 完全陌生。还在学习) 我想我开始明白了。但如果我这样做...... $url = "./3.php?filename=" 。 urlencode($_GET["aaa"] . ".txt");我想如果我使用 $_GET["filename"] 会得到与 $_GET["aaa"] 相同的结果。这也是使用 urlencode 的好结果之一吗?因为如果我只是在 3.php 中使用 $_GET["aaa"] ,则无法找到该值,因为它没有链接,而是在 "./3.php?filename=" 的帮助下。 urlencode($_GET["aaa"] . ".txt");我可以将$_GET["aaa"]的参数进行到3.php以上是关于在我的示例中如何使用 urlencode()?的主要内容,如果未能解决你的问题,请参考以下文章
sh 如何使用bash或curl将数据urlencode到URL中 - 来自https://stackoverflow.com/questions/37309551/how-to-urlencode-