0

我正在使用的第 3 方服务将用户返回到如下网址:

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()过去使用它来实现这一点,但不记得细节了。

4

4 回答 4

1

不确定 putenv,但如果情况变得更糟,您可以通过爆炸来获取 get 数组的内容$_SERVER['QUERY_STRING']

get 不需要启用,您仍然可以访问。

于 2012-05-31T01:12:31.987 回答
0

尝试

$this->config->set_item("allow_get_array",TRUE); 

在你的控制器的构造函数之前parent::__construct();

调用新控制器时会自动调用安全过滤函数。它执行以下操作:

如果 $config['allow_get_array'] 为 FALSE(默认为 TRUE),则销毁全局 GET 数组。

于 2012-05-29T06:22:25.230 回答
0

尝试仅使用重定向:

<?php
$id = $_GET['id'];
$something = $_GET['something'];
header('Location: http://www.site.com/' . $id . '/' . $something);

只要初始something.php请求是直接针对该文件而不是index.php.

这是我能想到的最安全的方法,您不必中断 CodeIgniter 的程序流程或在您的应用程序中启用查询字符串,这可能是不安全的。

于 2012-05-29T03:19:01.113 回答
0

也许我误解了你的架构,但你不能只为 codeigniter 启用 GET 吗?

请参阅$config['allow_get_array']文档:

http://codeigniter.com/user_guide/libraries/input.html

$this->input->get()在同一页上看到..

于 2012-05-29T03:23:38.120 回答