我不确定为什么这不起作用。我在配置文件中有allow_get_array = TRUE。这就是我要做的......
这是用户从电子邮件中点击的链接
http://www.site.com/confirm?code=f8c53b1578f7c05471d087f18b343af0c3a638
confirm.php控制器:
$code = $this->input->get('code');
也尝试了
$code = $this->input->get('code', TRUE);
有什么想法吗?
答案 0 :(得分:8)
在config.php
更改以下内容:
$config['uri_protocol'] = 'AUTO';
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
$config['enable_query_strings'] = FALSE;
要:
$config['uri_protocol'] = 'REQUEST_URI';
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-?';
$config['enable_query_strings'] = TRUE;
您可以更改URI以使用http://www.site.com/confirm/code/f8c53b1578f7c05471d087f18b343af0c3a638
之类的细分,而不是弄乱查询字符串。要访问代码段,您可以使用$this->uri->segment(3);
。我个人更喜欢这种方式使用查询字符串。见URI Class
答案 1 :(得分:5)
我这样做了,无需更改配置文件即可运行:
//put some vars back into $_GET.
parse_str(substr(strrchr($_SERVER['REQUEST_URI'], "?"), 1), $_GET);
// grab values as you would from an ordinary $_GET superglobal array associative index.
$code = $_GET['code'];
答案 2 :(得分:3)
使用此:
$code = isset($_REQUEST['code']) ? $_REQUEST['code'] : NULL;
修改强>
在PHP> = 7.0中,您可以这样做:
$code = $_REQUEST['code'] ?? NULL;
答案 3 :(得分:0)
http://www.site.com/confirm/?code=f8c53b1578f7c05471d087f18b343af0c3a638
而不是
http://www.site.com/confirm?code=f8c53b1578f7c05471d087f18b343af0c3a638
没有任何配置或者请编辑