我正在使用的第三方服务将用户返回到以下网址:
site.com/something.php?id=XXX&something=abc....
因此,我需要只能接受网站的一部分$_GET
参数。
有没有办法将文件放在codeigniter的应用程序目录之外,这将执行以下操作:
<?
$id = $_GET['id'];
$something = $_GET['something'];
//Do something so codeigniter thinks this is a request to site.com/process/$id/$something
require('index.php'); //codeigniter's index.php file
?>
我记得过去使用putenv()
来实现这一点,但不记得细节。
答案 0 :(得分:1)
不确定putenv,但如果情况变得更糟,你可以通过爆炸$_SERVER['QUERY_STRING']
来获取get数组的内容
获取不需要启用,您仍然可以访问。
答案 1 :(得分:0)
尝试使用重定向:
<?php
$id = $_GET['id'];
$something = $_GET['something'];
header('Location: http://www.site.com/' . $id . '/' . $something);
只要初始something.php
请求直接发送到该文件而不是index.php
,CodeIgniter就不会运行(实际上,这取决于你的.htaccess [或等效]文件,所以你可能需要调整它。)
这是我能想到的最安全的方法,你不必分解CodeIgniter的程序流程或在你的应用程序中启用查询字符串,这可能是不安全的。
答案 2 :(得分:0)
也许我误解了你的架构,但你不能只为启动编码器启用GET吗?
请参阅文档中的$config['allow_get_array']
:
http://codeigniter.com/user_guide/libraries/input.html
在同一页面上查看$this->input->get()
..
答案 3 :(得分:0)
尝试
$this->config->set_item("allow_get_array",TRUE);
在parent::__construct();
之前的控制器构造函数中。
新的时候会自动调用安全过滤功能 控制器被调用。它执行以下操作:
如果$ config ['allow_get_array']为FALSE(默认为TRUE),则销毁 全局GET数组。