在我的示例中如何使用 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-

如何使用 bash 或 curl 将数据 urlencode 到 URL

如何在我的MacOS应用程序中拖放电影文件(.mov)?

如何在我的 Android 应用中录制视频?

如何在我的 Django 模型中列出项目?

如何在我的自定义 JComponent 中监听默认颜色变化?