summaryrefslogtreecommitdiff
path: root/framework/Web/UI/THiddenFieldPageStatePersister.php
diff options
context:
space:
mode:
authorxue <>2005-12-21 19:17:25 +0000
committerxue <>2005-12-21 19:17:25 +0000
commit6960f40252533b7e286465c27fa810b3c3213e72 (patch)
tree205f30d23ecc7090f0d39fb8724d7682ff3f39e5 /framework/Web/UI/THiddenFieldPageStatePersister.php
parent7f644982bb7193fa33763e1b0660776e02f4159d (diff)
Changed THiddenFieldPageStatePersister to TPageStatePersister. Changed the way of generating private key (previously it was not fully implemented yet.)
Diffstat (limited to 'framework/Web/UI/THiddenFieldPageStatePersister.php')
-rw-r--r--framework/Web/UI/THiddenFieldPageStatePersister.php81
1 files changed, 0 insertions, 81 deletions
diff --git a/framework/Web/UI/THiddenFieldPageStatePersister.php b/framework/Web/UI/THiddenFieldPageStatePersister.php
deleted file mode 100644
index d4041983..00000000
--- a/framework/Web/UI/THiddenFieldPageStatePersister.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-class THiddenFieldPageStatePersister extends TComponent implements IPageStatePersister, IModule
-{
- private $_application;
- private $_id='persister';
-
- /**
- * Initializes the service.
- * This method is required by IModule interface.
- * @param TApplication application
- * @param TXmlElement module configuration
- */
- public function init($application, $config)
- {
- $this->_application=$application;
- $application->getService()->setPageStatePersister($this);
- }
-
- /**
- * @return string id of this module
- */
- public function getID()
- {
- return $this->_id;
- }
-
- /**
- * @param string id of this module
- */
- public function setID($value)
- {
- $this->_id=$value;
- }
-
- public function save($state)
- {
- $data=Prado::serialize($state);
- $hmac=$this->computeHMAC($data,$this->getKey());
- if(extension_loaded('zlib'))
- $data=gzcompress($hmac.$data);
- else
- $data=$hmac.$data;
- $this->_application->getService()->getRequestedPage()->getClientScript()->registerHiddenField(TPage::FIELD_PAGESTATE,base64_encode($data));
- }
-
- public function load()
- {
- $str=base64_decode($this->_application->getRequest()->getItems()->itemAt(TPage::FIELD_PAGESTATE));
- if($str==='')
- return null;
- if(extension_loaded('zlib'))
- $data=gzuncompress($str);
- else
- $data=$str;
- if($data!==false && strlen($data)>32)
- {
- $hmac=substr($data,0,32);
- $state=substr($data,32);
- if($hmac===$this->computeHMAC($state,$this->getKey()))
- return Prado::unserialize($state);
- }
- throw new Exception('viewstate data is corrupted.');
- }
-
- private function getKey()
- {
- return 'abcdefe';
- }
-
- private function computeHMAC($data,$key)
- {
- if (strlen($key) > 64)
- $key = pack('H32', md5($key));
- else if (strlen($key) < 64)
- $key = str_pad($key, 64, "\0");
- return md5((str_repeat("\x5c", 64) ^ substr($key, 0, 64)) . pack('H32', md5((str_repeat("\x36", 64) ^ substr($key, 0, 64)) . $data)));
- }
-}
-
-?> \ No newline at end of file