Exemplo n.º 1
0
 function _generateHash($values, $locked = null, $magic_life = FB_LOCK_FORM_FIELDS_MAGIC_LIFE_ANY)
 {
     global $_SERVER;
     // < 4.1.0
     assert('is_array($values)');
     assert('is_integer($magic_life)');
     if (!$locked) {
         $locked = array_keys($values);
     }
     assert('is_array($locked)');
     $secret = FB_LOCK_FORM_FIELDS_SECRET;
     if ($magic_life & FB_LOCK_FORM_FIELDS_MAGIC_LIFE_SCRIPT) {
         if (isset($_SERVER['PHP_SELF'])) {
             $secret .= $_SERVER['PHP_SELF'];
         } elseif (isset($_SERVER['SCRIPT_FILENAME'])) {
             $secret .= $_SERVER['SCRIPT_FILENAME'];
         }
     }
     if ($magic_life & FB_LOCK_FORM_FIELDS_MAGIC_LIFE_SESSION) {
         $secret .= session_id();
     }
     if (isset($this)) {
         assert('is_object($this)');
         assert('method_exists($this, "addMagic")');
         $secret .= $this->addMagic($magic_life);
     } else {
         $secret .= fbHTML_LockFormFields::addMagic($magic_life);
     }
     foreach ($locked as $k) {
         if ($k == FB_LOCK_FORM_FIELDS_HASH_NAME) {
             // skip if there is hash
             continue;
         }
         // serialize allows us to handle arrays (such as multi-selects)
         $secret .= '&' . $k . '=' . serialize($values[$k]);
     }
     return md5($secret);
 }