路由URI包含codeigniter中的电子邮件

时间:2015-05-01 11:22:24

标签: codeigniter routes uri

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

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?

5 个答案:

答案 0 :(得分:2)

应该是:

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

这有效

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

答案 3 :(得分:0)

转到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

答案 4 :(得分:0)

这对我有用

的config.php

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

router.php

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