[英]CodeIgniter - Routing urls with GET Variables
我检查了类似的问题,但那些似乎没有帮助。
我有一个类似的电子邮件验证,即在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);
}
问题是,当我尝试上面列出的网址时,我得到了404。 我收到Message: Undefined variable: fields
当我尝试像http://amazon.dev/verify/asdasdasd
这样的Message: Undefined variable: fields
时
有人能指出我正确的方向吗?
ADD:如果没有?
在网址中,它的工作原理。 但是对于get查询url的标准应该是,我想知道如何解决这个问题
据我所知,路由不接收查询字符串。 所以,你应该从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);
}
问题实际上是,查询在/
后启动。
实际上网址应该在这个模型中, ?
紧跟目录名后。
http://mysite.dev/verify/?id=emailaddress@gmail.com&hash=562828a975740ac6820e40f7f61b4407
路线应该是
$route['verify'] = 'formcontroller/verification';
并且应该使用CodeIgniter
get
方法处理变量。
$this->input->get('variablename');
此外,如果配置文件不是唯一允许的任何字符,则url应该只是urlencoded
。
只有URL的路径段是可路由的,您不需要解析查询参数......
通过$_GET
超全局(如原始PHP)或通过Input类'get()方法访问它们。
的?
不是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
config.php文件
$config['permitted_uri_chars'] = 'az 0-9~%.:_\\-=';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.