$ _REQUEST在codeigniter中不起作用

时间:2013-07-12 01:29:50

标签: codeigniter

我不知道我做错了什么,但我只是搞砸了一下

我有一个调用控制器的href

<a href="<?php echo base_url();?>mailing/index/?club=<?php echo $club_info[0]['club_title'];?>"><img src="<?php echo base_url();?>assets/front_assets/images/button_joinclub.png" width="180" height="44" border="0"></a>

现在功能就是这个

class mailing extends CI_Controller{
    private $pagesize = 20;
    function __construct() {
        parent::__construct();
        @session_start();
    }

    function index()
    {
         echo $_REQUEST['club'];
    }
}

但它给了我错误

A PHP Error was encountered

Severity: Notice

Message: Undefined index: club

Filename: controllers/mailing.php

Line Number:12




EDIT

我需要从不同的页面调用邮件/索引,有时我需要传递参数,有时不需要

如果我使用

function index($club)
{
//function body;
}

然后我总是需要发送一些参数

有时调用href也可以像这样

<a href="<?php echo base_url();?>mailing"><img src="<?php echo base_url();?>assets/front_assets/images/button_joinclub.png" width="180" height="44" border="0"></a>

所以它会调用一个错误,因为在函数定义中我发布了一个参数的presense,而我没有通过这个链接传递任何参数

这就是我需要的原因

a href="<?php echo base_url();?>mailing/index/?club="<?php echo $club_info[0]['club_title'];?>"

这样我就可以使用isset($ _ REQUEST [&#39; club&#39;]来检查是否存在。

4 个答案:

答案 0 :(得分:1)

首先,不需要回显base_url();只有/ mailing / index就够了。传递参数,就像McGarnagle告诉你的第三段一样。

<a href="/mailing/index/club_title"></a>

然后在你的控制器中使用索引函数:

$club_title = $this->uri->segment(3);

你刚刚设置了一个名为club_title的新变量来保存它的值。这就是你传递params的方式,如果你不想从其他页面传递它,你不需要。它只表示在这种情况下变量将为null。

URI帮助程序的工作方式让您了解发生了什么:

控制器 - 第1段 方法 - 段2 参数 - 第3段

您可以根据需要添加任意数量的参数,然后使用URI调用它们。确保将它加载到配置文件夹中的autoload.php或每个控制器的构造函数中,如下所示:

$this->load->helper('url');

PS:我们从不在codeigniter中使用$ _REQUEST。

答案 1 :(得分:1)

CodeIgniter禁用除$_GET$_COOKIE$_POST之外的所有GLOBALS以确保安全。

<强>参考:

Register_globals

During system initialization all global variables are unset, except those found in the $_GET, $_POST, and $_COOKIE arrays. The unsetting routine is effectively the same as register_globals = off.

See Documentation here

答案 2 :(得分:1)

CodeIgniter带有帮助程序方法,可让您获取POST,GET,COOKIE或SERVER项目,但CodeIgniter禁用除$ _GET,$ _ COOKIE和$ _POST之外的所有GLOBALS,以确保安全性。

您可以使用以下输入法:

$ this-> input-> post()

$ this-> input-> get()

$ this-> input-> cookie()

$ this-> input-> server()

答案 3 :(得分:0)

出于安全原因,

CodeIgniter 清除 $_REQUEST变量。我认为它与Codeigniter手册here中描述的自动输入过滤有关,但它并没有特别提及。我不确定是否设置

$config['global_xss_filtering'] = TRUE;

在config.php中是否会影响它。