【问题标题】:How do I build on a query string?如何构建查询字符串?
【发布时间】:2012-01-17 17:16:58
【问题描述】:

我所拥有的是,当有人点击我索引上的链接时,它会调用index.php?action=signup,并且会显示一个注册表单。

然后如何使注册表单维护查询字符串的action=signup 部分,以便当用户单击“提交”时,新的查询字符串为index.php?action=signup&email=user@email.com

最好的设置方法是什么?我是否应该以某种方式将操作拆分为GET,将数据拆分为POST

我不确定我是否正确描述了这一点,但我想将我的所有功能保留在 index.php 上,所以当我集成 .htaccess 时,一切都会像 www.site.com/signupwww.site.com/login 等等。

【问题讨论】:

    标签: php query-string


    【解决方案1】:

    在表单提交中执行此操作的最佳方法是将<form> 操作更改为正确的 URL,并将方法更改为GET,如下所示:

    <form action="index.php?action=signup" method="GET">

    然后,隐藏在表单中,输入如下内容:

    <input type="hidden" name="action" value="signup" />

    那么你的 URL 在提交时会包含正确的参数。

    但是,如果您需要修改此服务器端,则可以通过$_SERVER['QUERY_STRING'] 获取所有查询参数。使用parse_str 获取值数组,并使用http_build_query 重新创建查询字符串:

    例子:

    $params = array();
    parse_str( $_SERVER['QUERY_STRING'], $params);
    $params['email'] = 'user@email.com';
    echo http_build_query( $params); // Will output a new query string for your URLs
    

    【讨论】:

    • 不要使用 $_SERVER,而是使用 $_GET 或 $_REQUEST。它们已经是数组格式了。
    • @nickb hafichuk 的意思可能是复制$_GET 的内容(或直接使用),而不是使用parse_str 解析$_SERVER['QUERY_STRING']
    猜你喜欢
    • 2013-05-30
    • 2010-09-23
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    相关资源
    最近更新 更多