【问题标题】:Codeigniter & $_GET variables w/Sagepay带 Sagepay 的 Codeigniter 和 $_GET 变量
【发布时间】:2012-05-24 22:20:53
【问题描述】:

我正在将 Sagepay 集成到我的 Codeigniter v2.1 应用程序中 - 出于某种原因,我在获取 $_GET 查询字符串中从 Sagepay 返回的加密数据时遇到问题。

每当我尝试 $_GET 中的变量时,它都会返回 FALSE,类似地,$_GET 数组本身会返回一个空数组。

网址如下:

http://mydomain.com/packages/payment_status/success/?crypt=IgAdEBkXOhwsHRAATkVESF5RQkNDSEJEW1BWSVpDWVNDQUFXXVJXVCI1ICAOLApZFEJMIUVMRiMvSVoxMFxeMTMjW0kuQDAkXjBGIVoiK0FAUzcwQRhINxsTABAASTkuSDcbEwAQADATEQ8NA09EVUNEVl9OMAcXVCQGAB4KHA0cEwAMHBpWEg8XTyEBBhARBRYIEQNcUjELNQMRBioAT0VVQE1OUFpCLiQnJiVGSzYrJzogPTEqVDUqKiFPPzUxMDxWKiAoNlQ1ARcGExYdNgoBAQkHSTgqOikuJjctNjBQNQEXGzEbARYmExYbCBtPOionOTcxLSwqNlImJUYkAB0RAwZJKDIgNS0rIEk1HQMHNR8BU1RJQTA2FhcDFws3GxMAEABJOCo6Jyc3Ny42MFAmDxYLJg0VFkkgLD0lST4VFgdAMgwJDRsBSVVDREBDLwkABxoRTkZDVUBUXw==

    $crypt = $this->input->get('crypt');
    var_dump($crypt); // returns FALSE

我已开启以下配置设置:

$config['uri_protocol'] = "QUERY_STRING";
$config['enable_query_strings'] = TRUE;
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-?'; // to allow the '?' character in the url

谁能建议我做错了什么?

【问题讨论】:

  • 我不使用查询字符串方法,但您能展示一个用于调用此代码的 url 示例吗?
  • 我已添加要返回的 URL
  • 我很确定这已经被问过几次了。查看右侧的相关链接。
  • 好的,现在我可以看到它是友好 url 和 get 的混合体。您缺少一个配置选项,然后您需要做一些工作以将 var 放入 $_GET 或使用 REQUEST。见答案。
  • 您可以尝试将uri_protocol 设置为AUTO 吗?我正在使用一个类似的支付提供商,它在进行回调时坚持使用 GET 而不是 POST。我的 CI 实现允许两者,并且在使用 AUTO 时可以很好地读取值。

标签: php codeigniter input get opayo


【解决方案1】:

当你激活查询字符串时,你应该使用这个语法

index.php?c=controller&m=method

更多信息,请阅读:

http://codeigniter.com/user_guide/general/urls.html

【讨论】:

    【解决方案2】:

    Codeigniter 不使用 $_GET 或 $_POST 变量。

    $this->input->get()$this->input->post()

    是您访问它们的方式。

    【讨论】:

      【解决方案3】:

      试试这个:

      $config['uri_protocol'] = "PATH_INFO";
      $var = $this->input->xss_clean($_REQUEST['var']);
      

      【讨论】:

        【解决方案4】:

        最后用了这个方法.. MY_Controller.php

        function current_url() {
        $CI =& get_instance();
        
        $url = $CI->config->site_url($CI->uri->uri_string());
        return $_SERVER['QUERY_STRING'] ? $url.'?'.$_SERVER['QUERY_STRING'] : $url;
        

        }

        // 在我的控制器中 $parts = parse_url(current_url());

            if (isset($parts['query']) && is_array($parts))
            {
                parse_str($parts['query'], $querystring);
                krumo($querystring);
            }
        

        现在看来没问题 :) 谢谢 - 已将 uri 设置更改为 PATH_INFO 并对 htaccess 文件进行了一些调整。

        【讨论】:

          猜你喜欢
          • 2010-12-02
          • 2013-05-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多