【问题标题】:routing URI containing email in codeigniter在 codeigniter 中包含电子邮件的路由 URI
【发布时间】:2015-05-01 11:22:23
【问题描述】:

这是用用户控制器编写的电子邮件激活链接

http://www.some.com/user/activate_user/user@gmail.com/90101001010

我想为此编写路线。

我尝试了下面的一个,但它的

// USER POST
$route['user'] = 'user';
$route['user/activate_user/:any/:num'] = 'user/activate_user/$1/$2';

错误

An Error Was Encountered

The URI you submitted has disallowed characters.

如果我这样运行 uri 就可以了

http://www.some.com/user/activate_user/activate_user/1111/90101001010

为什么它不接受电子邮件 ID?

【问题讨论】:

    标签: codeigniter routes uri


    【解决方案1】:

    应该是:

    $route['user/([\w+-]+)(\.[\w+-]+)*@([a-zA-Z\d-]+\.)+[a-zA-Z]{2,6}/(:any)']
    

    整个字符串是一个没有分隔符或修饰符的正则表达式。您放置了分隔符、修饰符,并且还使用了^ 和$。

    【讨论】:

    • 我试过 $route['user/activate_user/([\w+-]+)(\.[\w+-]+)*@([a-zA-Z\d-]+ \.)+[a-zA-Z]{2,6}/(:any)'] = 'user/activate_user/$1/$2';遇到错误您提交的 URI 包含不允许的字符。
    • $config['permitted_uri_chars'] = 'a-z 0-9~%.:_-'@&?=;改变这个
    • 由于引号导致语法错误我改变了这个 $config['permitted_uri_chars'] = 'a-z 0-9~%.:_-@&?=';错误严重性:警告消息:preg_match():编译失败:偏移量 15 处的字符类范围乱序文件名:core/URI.php
    • 试试这个 $config['permitted_uri_chars'] = 'a-z 0-9~%.:_@-';并检查sholsinger.com/2009/04/…
    • 是的,谢谢你:) $config['permitted_uri_chars'] = 'a-z 0-9~%.:_@-'; $route['user/activate_user/(:any)/(:any)'] = 'user/activate_user/$1/$2';
    【解决方案2】:

    请检查您的配置文件,您在 url 中允许使用哪些 uri 字符。默认情况下它看起来像:

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

    如果您需要进一步的需求,请访问链接Url Guideline by ellislab

    【讨论】:

      【解决方案3】:

      成功了

      $config['permitted_uri_chars'] = 'a-z 0-9~%.:_@-';
      $route['user/activate_user/(:any)/(:any)'] = 'user/activate_user/$1/$2'; –
      

      【讨论】:

        【解决方案4】:

        转到 config.php

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

        并添加$config['permitted_uri_chars'] = 'a-z 0-9~%.:_()@&\-!';

        以及停止和/或刷新服务器

        替换这个

        $route['user'] = 'user';
        $route['user/activate_user/:any/:num'] = 'user/activate_user/$1/$2';
        

        有了这个

        $route['user'] = 'user';
        $route['user/activate_user/(:any)/(:any)'] = 'user/activate_user/$1/$2';
        

        已添加

        Tutorial Email Activation

        【讨论】:

        • 试过这个 $config['permitted_uri_chars'] = 'a-z 0-9~%.:_-@&?=';不工作消息:preg_match():编译失败:偏移量 15 处字符类中的范围乱序文件名:core/URI.php
        • 我添加了一个关于电子邮件激活的教程,它是我从 phpacademy 使用的,即使它是旧版本的 codeigniter 在 codeigniter 3 上仍然可以正常工作
        【解决方案5】:

        这对我有用

        config.php

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

        路由器.php

         $route['user/activate_user/(:any)/(:any)'] = 'user/activate_user/$1/$2';
        

        【讨论】:

          猜你喜欢
          • 2012-12-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多