Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
Php 隐藏/保护URL-获取字符串/数据_Php_Url - Fatal编程技术网

Php 隐藏/保护URL-获取字符串/数据

Php 隐藏/保护URL-获取字符串/数据,php,url,Php,Url,如何防止数据字符串显示在URL中?因为任何人都可以很容易地覆盖所写的内容,而且看起来不整洁 我没有尝试过任何重写规则,我想有一个更简单的方法 我的印象是rawurlenocde和urlencode会这样做,但我认为我错了 <td align="left"><a href="review.php?id='. $row['review'] . '&title=' . $row['movie_title'] .'"> Read Review </a>

如何防止数据字符串显示在URL中?因为任何人都可以很容易地覆盖所写的内容,而且看起来不整洁

我没有尝试过任何重写规则,我想有一个更简单的方法

我的印象是rawurlenocde和urlencode会这样做,但我认为我错了

<td align="left"><a href="review.php?id='. $row['review'] . '&title=' . $row['movie_title']  .'"> Read Review </a>

这就是它在另一页上的显示方式

    <div id="sub_review_container"> <? echo ($_GET['title'])?> </div>

    <div id="Review_container"> <? echo ($_GET['id'])?> </div>

POST的预期用途是用于改变服务器状态的事情:更改文件、向数据库添加内容等。此外,没有简单的方法(据我所知)让浏览器通过链接提交POST请求(您需要在页面上有一个隐藏的表单,并让链接触发要提交的表单)。POST也不总是对用户友好的,因为如果他们尝试刷新页面,浏览器会在他们是否要重新提交数据方面给他们设置错误

听起来你担心两个潜在的问题:

  • 有人提交了一个错误的值
  • URL看起来不整洁
  • 对于第一部分,答案是在对提交的值执行操作之前验证这些值。无论如何,你都应该这样做。即使有一篇博文,只要有一点点诀窍,任何人都可以以自己的方式提交任何价值。来自web客户端的任何数据都不应被信任


    对于第二部分,PHP无法解决您的问题,您需要依靠web服务器本身来解决。PHP只获取服务器发送给它的数据,服务器根据URL确定将请求路由到何处。听起来您正在使用ApacheHTTPD,所以您最好使用URL重写。这并不难,只要花一个小时或更少的时间阅读文档,您就应该能够快速启动并运行。还有其他方法可以做到这一点:说服Apache将特定前缀URL下的所有请求发送到您的PHP脚本,您可以从PHP内部检查请求URL,但这比使用Apache的重写引擎要多得多。

    如果您想隐藏GET参数,唯一的方法是URL重写-或者不使用GET。我可以在提供的示例中使用POST吗?请不要推荐POST作为GET的替代方法。它们工作方式不同,用途不同,一般不应视为可互换。