CSRF validation

How to remove validation from 1 page?  ::)

Because CSRF validation is performed very early (in onbeginRequest), you will need to override CHttpRequest::normalizeRequest() in order fit for your needs.

next code leading to Exception:  ;D



function removeCsrfValidation(){


	Yii::app()->detachEventHandler('onbeginRequest', array(Yii::app()->getComponent('request'), 'validateCsrfToken'));


}


Yii::app()->attachEventHandler('onbeginRequest', 'removeCsrfValidation');




PHP Error


Description





Undefined offset: 1


Source File





...frameworkcollectionsCListIterator.php(73)


custom request component:

<?php


class CCustomHttpRequest extends CHttpRequest  {


	public $noCsrfValidationRoutes = array();





	protected function normalizeRequest()


	{


		parent::normalizeRequest();


		$url = implode('/', array_splice(explode('/', Yii::app()->getUrlManager()->parseUrl($this)), 0, 2));


		if(false!==array_search($url, $this->noCsrfValidationRoutes) && $this->enableCsrfValidation)


			Yii::app()->detachEventHandler('onbeginRequest',array($this,'validateCsrfToken'));


	}


}

What is the complete error call stack?

#0 ..frameworkbaseCComponent.php(507): CListIterator->current()


#1 ..frameworkbaseCApplication.php(155): CWebApplication->raiseEvent()


#2 ..frameworkbaseCApplication.php(132): CWebApplication->onbeginRequest()


#3 ..index.php(20): CWebApplication->run()


:)

What is your PHP version? I can't seem to reproduce the issue.

my php is 5.2.8.8 :) (win32)