我使用index.php来控制页面的访问。
这是机制:
Index.php将页面重定向到search.php;代码:index.php/?page=search
search.php的路径是:pages/search.php
,search.php包含header.html,body.html等。
现在在body.html中我们使用:index.php/?page=search
参数调用search.php,body.html包含以下代码:index.php/?page=search?query='.quote_replace(addmarks($query)).
您可以看到有两个'?'。而这正是这个问题。
当我浏览search.php时,它会显示在网址:example.com/?page=search
。
当我实际在body.html中点击search.php中的按钮时,它会显示在网址example.com/index.php/?query=&search=1
中。
这样,浏览只显示页面index.php。但是我想在search.php中显示搜索结果,它应该显示example.com/?page=search/?query=&search=1
。但您可以看到/?page=search
消失,此处显示/index.php
。
对不起,条件很复杂,我不能很好地描述它。如果你不能很好地理解它,我会解释。
那么,你有什么建议吗?非常感谢。
答案 0 :(得分:2)
如果要使用字符串(例如search/?query=&search=1
)作为URL参数,则需要进行编码,使其不再包含特殊字符,例如?
和&
。请使用urlencode() PHP function:
urlencode("search/?query=findme&search=1")
这将产生以下字符串,可以安全地包含在URL参数中:
search%2F%3Fquery%3Dfindme%26search%3D1
构建你需要的第一个字符串,以便编写所有参数。这里的http_build_query()函数非常有用,它使用带有键和值的数组,对所有这些函数进行编码,并在需要时添加=
和&
个字符:
http_build_query(array("query" => "find&me", "search" => "1"))
产生
query=find%26me&search=1