Обработка вопросительного знака в URL в codeigniter - PullRequest
1 голос
/ 10 марта 2011

Я использую способ оплаты, который в случае успеха возвращает URL-адрес, такой как mysite / payment / sucess? Auth = SDX53641sSDFSDF, но, поскольку я использую codeigniter, вопросительные знаки в URL не работают для меня.Я попытался маршрутизации, но это не сработало.В качестве последнего средства я создал системный хук и удалил часть GET из URL, для которой мне нужно было установить

$config["uri_protocol"] = "REQUEST_URI";

Это работало так, но все другие ссылки на моем сайте не работали, как предполагалось,попытался изменить uri_protocol, но никак не мог заставить его работать.Таким образом, в основном моя проблема связана с обработкой части? Auth = SDFSEFSDFXsdf5345sdf в моем URL, когда метод paypment перенаправляет на мой сайт с указанным выше URL, он перенаправляется на домашнюю страницу вместо функции внутри контроллера.Как я могу справиться с этим, я использую версию codeIgniter 1.7, и не могу найти какой-либо способ.Пожалуйста, предложите какое-нибудь решение.

Ответы [ 3 ]

2 голосов
/ 11 марта 2011

Я думаю, что я бы расширил базовый класс URI, создав новый файл в application / library / MY_URI.php, который расширит класс CI_URI, затем скопировал бы метод _fetch_uri_string, и здесь вы можете добавить свою логику, если $ _SERVER ['QUERY_STRING '] присутствует:

class MY_URI extends CI_URI
{
    function __construct()
    {
        parent::CI_URI();
    }

    //Whatever this method returns the router class is using to map controller and action accordingly.
    function _fetch_uri_string()
    {
        if(isset($_SERVER['QUERY_STRING']) AND !empty($_GET['auth']))
        {
            //Do your logic here, For example you can do something like if you are using REQUEST_URI
            $this->uri_string = 'payment/success/'.$_GET['auth'];
            return;
            //You will set the uri_string to controller/action/param the CI way and process further
        }

        //Here goes the rest of the method that you copied
    }
}

Также обратите внимание, что вы должны выполнить проверку безопасности своего URL, и я надеюсь, что это сработает для вас, в противном случае вы можете попробовать расширить класс CI_Router или другие методы (немного поэкспериментируйте)с несколькими методами, хотя _set_routing имеет важное значение).Эти 2 класса отвечают за перехваченные URL и отображают их на контроллер / действие / параметры в CI.

1 голос
/ 10 марта 2011

Мне кажется, эта тема содержит ответ.
В основном добавьте

$config['enable_query_strings'] = TRUE;

в ваш config.php

0 голосов
/ 04 декабря 2014

надеюсь, это поможет вам! нет необходимости менять htaccess, просто измените свой код.

redirect(base_url()."controller_name/function_name");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...