How to remove validation from 1 page?
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:
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)