private function getChallengeData(ISblamPost $p) { if ($installid = $p->getInstallId()) { // !!! must be in sync with challenge.js.php $fieldname = 'sc' . abs(crc32($installid)); $post = $p->getPost(); if (!empty($post[$fieldname]) && preg_match('!^([a-f0-9]{32})([a-f0-9]+;([a-f0-9]+);([\\d.,]+))((?:;\\d+)*)$!', $post[$fieldname], $r)) { return array($installid, $fieldname, $r[1], $r[2], hexdec($r[3]), explode(',', $r[4]), explode(';', $r[5])); } d("can't find expected field {$fieldname} for challenge"); foreach ($post as $k => $v) { if (preg_match('/^sc\\d+$/', $k)) { d("Found different install id for challenge"); return array(0, $k, 0, 0, 0, array(), array()); } } } else { d("challenge: didn't get install id"); } return NULL; }