【问题标题】:How do I add a parameter to a URL like '?=website-name'如何将参数添加到像“?=网站名称”这样的 URL
【发布时间】:2016-11-04 00:23:37
【问题描述】:

正如问题所说,如何向 URL 添加参数?

例子:

当您单击链接以获取 Product Hunt 上的特色产品时,该 URL 会附加?ref=producthunt

我可以手动将这样的参数添加到我网站上的几个链接吗?在任何情况下这可能不是最理想的吗?

【问题讨论】:

    标签: url hyperlink


    【解决方案1】:

    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 了解更多关于过滤器的信息

    【讨论】:

    • 表单的另一个选项是 'post' 方法,它将表单响应添加到隐藏的超全局 $_POST 数组。例如,如果您的表单包含密码,那么通过 POST 发送它们比通过 URL(使用 GET)发送它们要好得多。
    【解决方案2】:

    添加到url的参数称为查询字符串,它们有格式

    • 它必须启动会吗?
    • 每个段落都将用 & 分隔

    示例:http://www.yoururl.com?name=myname&age=34&ect=somethingelse

    你犯的错误是把 ?= 放在你的网络服务器没有转换的地方。 你可以传递 '?websitename=website-name'

    【讨论】:

      【解决方案3】:

      查询字符串参数是键值对,它们与 URL 的域和路径以 ? 分隔,并以 & 彼此分隔,即 ?key=value&key2=value2

      这些值可以在客户端(在 Javascript 中)和服务器端由网络服务器或正在使用的服务器端语言(PHP、ASP.NET、Java)访问。

      某些值应使用encodeURIComponent 等函数进行编码,以确保它们有效。

      风险

      您需要注意查询字符串不包含任何敏感信息,例如顺序订单号,即?order=5,因为有人可以手动更改该值以查看其他用户的订单(?order=6,如果没有其他身份验证地方)。订单值应加密,因此无法猜测。此外,请勿使用 eval() 执行在查询字符串上传递的任何代码,因为恶意用户可能会更改内容以对另一个用户执行跨站点脚本 (XSS) 攻击并窃取他们的 cookie 或登录凭据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-06-13
        • 2012-11-19
        • 1970-01-01
        • 2018-08-07
        • 2017-01-07
        • 2019-03-03
        • 1970-01-01
        相关资源
        最近更新 更多