1

我在那里检查了类似的问题,但这些似乎没有帮助。

我有一个电子邮件验证,即在 CodeIgniter 中路由到正确的函数,并将数据传递给函数以进行进一步处理。

示例网址:

http://mysite.dev/verify/?id=emailaddress@gmail.com&hash=562828a975740ac6820e40f7f61b4407

当前路线:

$route['verify/(:any)'] = 'formcontroller/verification/$1';

功能 :

public function verification($slug)
    {
        parse_str(parse_url($slug, PHP_URL_QUERY), $fileds);
        var_dump($fields);
    }

问题是,当我尝试上面列出的 url 时,我得到了 404。Message: Undefined variable: fields当我尝试类似的东西时,我得到了http://amazon.dev/verify/asdasdasd

有人可以指出我正确的方向吗?

ADD :如果?url 中没有,它可以工作。但是对于获取查询网址的标准应该是,我想知道如何解决这个问题

4

5 回答 5

2

据我了解,Route 没有收到查询字符串。因此,您应该从 GET 数组中获取变量。为此,在 config.php 中进行第一次测试

$config['allow_get_array'] = TRUE;

然后在控制器中:

public function verification($slug)
    {
    $fields['id'] = $this->input->get('id');
    $fields['hash'] = $this->input->get('hash');
    var_dump($fields);
    }
于 2015-05-21T21:12:23.170 回答
1

问题实际上是,查询在/.

实际上 url 应该在这个模型中,?紧跟在目录名之后。

http://mysite.dev/verify/?id=emailaddress@gmail.com&hash=562828a975740ac6820e40f7f61b4407

路线应该是

$route['verify'] = 'formcontroller/verification';

并且变量应该get使用CodeIgniter.

$this->input->get('variablename');

urlencoded此外,如果有任何字符不是配置文件专门允许的,则 url 应该只是以防万一。

于 2015-05-22T13:20:41.443 回答
0

只有URL的路径段是可路由的,不需要解析查询参数...

通过$_GET超全局(如在原始 PHP 中)或通过Input 类的 get() 方法访问它们。

于 2015-05-21T19:34:20.463 回答
0

不是?URI 段中允许的字符

/*
|--------------------------------------------------------------------------
| Allowed URL Characters
|--------------------------------------------------------------------------
|
| This lets you specify with a regular expression which characters are permitted
| within your URLs.  When someone tries to submit a URL with disallowed
| characters they will get a warning message.
|
| As a security measure you are STRONGLY encouraged to restrict URLs to
| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
|
| Leave blank to allow all characters -- but only if you are insane.
|
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
|
*/

它位于 application/config/config.php

$config['permitted_uri_chars'] = 'a-z 0-9~%.:&_\-'; 

你可以附加 ? 到列表

这是 url 编码字符的列表 http://www.degraeve.com/reference/urlencoding.php

于 2015-05-21T20:38:56.473 回答
0

配置文件

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-=';

于 2017-09-05T05:43:53.923 回答