Php 在我的示例中如何使用urlencode()?

Php 在我的示例中如何使用urlencode()?,php,forms,get,urlencode,Php,Forms,Get,Urlencode,我查看了php.net并阅读了一些关于urlencode()如何工作的示例,但不知怎的,我就是做不好。有人能帮我一下吗 这将是很多的例子,所以希望我的简短的例子会有意义 我有一个名为2.php的页面,调用它是为了显示1.php中选择的.txt文件的一些内容 我被告知要为3.php创建一个链接,该链接应该看起来像/3?filename=a.txt 文件名为GET参数名,并使用urlencode()函数确保GET参数值为urlencoded 但我不知道应该如何以及在哪里放置urlencode(),以

我查看了
php.net
并阅读了一些关于
urlencode()
如何工作的示例,但不知怎的,我就是做不好。有人能帮我一下吗

这将是很多的例子,所以希望我的简短的例子会有意义

我有一个名为
2.php
的页面,调用它是为了显示
1.php
中选择的
.txt
文件的一些内容

我被告知要为
3.php
创建一个链接,该链接应该看起来像
/3?filename=a.txt
文件名为
GET
参数名,并使用
urlencode()
函数确保
GET
参数值为
urlencoded

但我不知道应该如何以及在哪里放置
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?filename=asdf.txt之类的内容,而不是./3.php

使用“filename”作为获取参数名。确保使用urlencode()函数对GET参数值进行urlencoded


但我只是不知道如何让它工作….

您可以将函数中应该进行url编码的部分包装在字符串中:

$url = 'http://www.google.com?q=' . urlencode($search);

OR in html

http://www.google.com?q=<?php echo urlencode($search); ?>
$url='1!'http://www.google.com?q=' . urlencode($search);
或者在html中
http://www.google.com?q=

其中,
是两个输出的串联。

请注意,如果处理不当,该系统可能容易受到远程文件包含的攻击……但有点简化了,因此没有太多的内容需要读取,但希望仍然能够理解。请注意,使用php读取文件名可能是一个安全问题。考虑以下示例:
/3?filename=.htpasswd
/3?filename=../../etc/passwd
/3?filename=../any.php
在所有情况下,您都可以读取用户无法看到的任意信息。我希望我把这个例子讲清楚了,但是$search呢?那应该是什么呢?比如说输出是什么?哦,我们可以在链接中添加echo?(对不起,我对php完全陌生。仍在学习)我想我开始了解它了。但是如果我这样做…$url=“./3.php?filename=”。urlencode($_GET[“aaa”]..txt”);我想如果我使用$\u GET[“filename”]将得到与$\u GET[“aaa”]相同的结果。这也是使用urlencode的好结果之一吗?因为如果我只是在3.php中使用$_GET[“aaa”],则无法找到该值,因为它没有链接,而是在“/3.php?filename=”的帮助下。urlencode($_GET[“aaa”]..txt”);我可以将$_GET[“aaa”]的参数带入3.php