【发布时间】:2016-11-04 00:23:37
【问题描述】:
正如问题所说,如何向 URL 添加参数?
例子:
当您单击链接以获取 Product Hunt 上的特色产品时,该 URL 会附加?ref=producthunt。
我可以手动将这样的参数添加到我网站上的几个链接吗?在任何情况下这可能不是最理想的吗?
【问题讨论】:
正如问题所说,如何向 URL 添加参数?
例子:
当您单击链接以获取 Product Hunt 上的特色产品时,该 URL 会附加?ref=producthunt。
我可以手动将这样的参数添加到我网站上的几个链接吗?在任何情况下这可能不是最理想的吗?
【问题讨论】:
URL 中的参数对应于超全局 $_GET 数组。 这意味着,如果您的 URL 采用以下形式 www.domain.com?key1=val1&key2=val2 , 然后 $_GET[key1] 包含 val1 ,依此类推。
在链接中手动添加这些参数是完全合法的(典型的用例是登录按钮,它将您重定向到当前 URL 并附加 &todo=login 。然后您可以添加一些触发的 PHP 代码$_GET 在键 'todo' 中包含值 'login' 时的登录过程)。
添加这些参数的另一种方法是表单。在 HTML 表单中,您指定一个“方法”,可以是“获取”或“发布”。 如果您选择“获取”,则在提交表单时,URL 将自动附加表单答案。
注意:直接从 $_GET 读取值通常是不安全的,因为用户可以用任何值填充它(只需更改 URL),因此最好使用过滤器来确保输入是安全的。查看http://www.w3schools.com/php/php_filter.asp 了解更多关于过滤器的信息
【讨论】:
添加到url的参数称为查询字符串,它们有格式
示例:http://www.yoururl.com?name=myname&age=34&ect=somethingelse
你犯的错误是把 ?= 放在你的网络服务器没有转换的地方。 你可以传递 '?websitename=website-name'
【讨论】:
查询字符串参数是键值对,它们与 URL 的域和路径以 ? 分隔,并以 & 彼此分隔,即 ?key=value&key2=value2。
这些值可以在客户端(在 Javascript 中)和服务器端由网络服务器或正在使用的服务器端语言(PHP、ASP.NET、Java)访问。
某些值应使用encodeURIComponent 等函数进行编码,以确保它们有效。
风险
您需要注意查询字符串不包含任何敏感信息,例如顺序订单号,即?order=5,因为有人可以手动更改该值以查看其他用户的订单(?order=6,如果没有其他身份验证地方)。订单值应加密,因此无法猜测。此外,请勿使用 eval() 执行在查询字符串上传递的任何代码,因为恶意用户可能会更改内容以对另一个用户执行跨站点脚本 (XSS) 攻击并窃取他们的 cookie 或登录凭据。
【讨论】: