2013-07-12 3 views
0

я не знаю, что я делаю неправильно, но я просто запутался чуток

я аа HREF Thats вызова контроллера

<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'];?>" 

так, что я могу использовать Исеть ($ _ REQUEST [ «клуб»], чтобы проверить, если они присутствуют или нет.

+0

Вы разрешили это? – SasaT

ответ

1

Прежде всего, нет необходимости в echo base_url(); Только/mailing/index достаточно. Чтобы передать параметры, которые вы делаете, как McGarnagle сказал вам в качестве третьего сегмента.

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

Тогда в контроллере в индексной функции:

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

Вы только что установили новую переменную с именем club_title, который сохраняет свою ценность. Вот как вы передаете параметры, и если вы не хотите передавать их с других страниц, вам не нужно. Это означает, что в этом случае переменная будет нулевой.

Путь URI помощник работает так, вы понимаете, что произошло:

Controller - сегмент 1 Метод - Сегмент 2 В параметре - сегмент 3

Вы можете добавить столько параметров, сколько вы хотите, и затем вызвать доступ их с URI. Убедитесь, что вы загрузите его в autoload.php в папке конфигурации или в конструкта функции вашего каждого контроллера, как это:

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

PS: Мы никогда не используем $ _REQUEST в CodeIgniter.

1

CodeIgniter отключает все GLOBALS, кроме $_GET, $_COOKIE и $_POST для обеспечения безопасности.

Ссылка:

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

+0

Есть ли способ превратить это? Это нарушает PHP SDK для Facebook: http://stackoverflow.com/questions/6790272/why-is-facebook-php-sdk-getuser-always-returning-0/13278198#13278198 – Mischa

+0

@Mischa, я бы порекомендовал не прерывать во встроенных стандартах, поскольку он обеспокоен безопасностью. Вы можете попробовать другие способы заставить ваш код работать. – Pupil

0

CodeIgniter чистки$_REQUEST переменный по соображениям безопасности. Я предполагаю, что это связано с автоматической фильтрацией входных сигналов, описанной в Руководстве по Codeigniter here, но это не упоминается там конкретно. Я не уверен, влияет ли это на настройку

$config['global_xss_filtering'] = TRUE; 

в config.php.

Смежные вопросы