【问题标题】:How to get the parameters from url without notice如何在不通知的情况下从 url 获取参数
【发布时间】:2014-11-29 18:13:52
【问题描述】:

所以我正在考虑一种方法,当页面下载到客户端时从 url 中删除参数,并在 get 参数的每个不同值中做出不同的响应。

让我为你更清楚。假设我有这个网址:www.abc.com/?q=jsdfnjns。理想情况下,我正在考虑使用 goo.gl 缩短此网址,然后将其发送给客户。当客户点击它时,它会自动转到 www.abc.com 干净的 url 并设置一个带有 q 值的 cookie 给客户。我以前在许多附属链接中看到过它,除了初始 url 没有获取参数但 value 实际上是一个子文件夹,例如 www.abc.com/jsdfnjns

那么实际获取 get 参数的值并使用 php 操作它的方法是什么,同时在没有用户通知的情况下从 url 中删除,或者在参数作为子文件夹给出时设置 cookie。我怀疑这一定是一些 htaccess 规则和 php 技巧但找不到方法。

使用给定的网址 www.abc.com/jsdfnjns 我如何立即重定向到 www.abc.com 并将 jsdfnjns 保存在 apache 或用户 cookie 中的服务器端吗? 有什么方法可以让实际的 get 参数也发生这种情况吗?

还有示意图:

www.abc.com/jsdfnjns 将其转换为 -> goo.gl/sjbjsb -> 点击时,用户将转到 www.abc.com 但不知何故我得到 jsdfnjns 并在主页上做出不同的响应。

希望我的问题定义明确,任何想法都会受到赞赏。 谢谢。

【问题讨论】:

    标签: php apache .htaccess mod-rewrite cookies


    【解决方案1】:

    首先你需要设置.htaccess文件

    <IfModule mod_rewrite.c>
    
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.+)$ index.php?q=$1 [QSA,L]
    
    </IfModule>
    

    index.php 代码:

    session_start();
    
    if(isset($_REQUEST['q'])) {
        $_SESSION['q'] = $_REQUEST['q'];
        header('Location:index.php');
        die();
    }
    else{
        if(isset($_SESSION['q'])) $q = $_SESSION['q'];
        else $q = null;
        //YOUR CODE
        var_dump($q);
    }
    

    【讨论】:

    • 您好,感谢您的快速回复。你的代码工作得很棒!!非常感谢 :) 我所做的唯一更改是删除 ifmodule 标签并将 strip_tags、trim 和 htmlspecialchars 应用于 $_SESSION['q']。再次感谢哥们!
    • 没问题,我很乐意帮忙。祝你有美好的一天
    • 还有什么,我应该改变什么让客户真正在栏中看到没有 index.php 的网站?
    • 更改标题('Location:index.php'); to header('位置:yoursitedomain.com'); (带有 http://)
    • 完美!以为我必须更改 .htaccess 中的某些内容。谢谢哥们:)
    猜你喜欢
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 2022-12-22
    • 1970-01-01
    • 2020-02-29
    相关资源
    最近更新 更多