Lai redzētu vai lapas apmeklētājs ir BITE klients, jāpārbauda IP adrese, no kuras lietotājs nāk, un HTTP pieprasījuma virsrakstā jāpārbauda Bite-Account-Id esamība. WAP ir pieejama testa lapa http://wap.biteplius.lt/phone.php - ja šo adresi atver mobilajā tālrunī, ir redzama visa pieejamā informācija.
Ir iespējams noteikt BITE lietotāju pēc Account ID, taču HTTP virsrakstus ir iespējams pārveidot, tādēļ drošības apsvērumu dēļ obligāti jāpārbauda arī IP adrešu loks, lai pārliecinātos, ka apmeklētājs ir BITE klients.
Papildus augstāk minētajam, sākot no 2007.gada 1.oktobra, lietotājs var pievienoties izmantojot MINI OPERA programmnodrošinājumu un izmantot MINI OPERA vārteju. Šiem lietotājiem vārtejas IP adrese ir savādāka.
MINI OPERA izmanto IP adrešu loku 195.189.142.0/23, BITE izmantotais IP adrešu loks redzams zemāk parādītajā piemērā.
Mazajai lapai jāizvērtē:
1. vai lietotāja IP adrese ir no BITE vai MINI OPERA IP adrešu loka;
2. lietotājs - user account_id.
Lietotājs ir BITE klients un izmanto BITE vārteju vai MINI OPERA programmnodrošinājumu, ja apstiprināti tiek abi nosacījumi (account_id nav 0 un lietotāja IP adrese ir no pieļaujamā IP adrešu loka).
<?php class MobileUser { private $accountId = 0; public function __construct() { if (isset($_SERVER['HTTP_BITE_ACCOUNT_ID'])) $this->accountId = $_SERVER['HTTP_BITE_ACCOUNT_ID']; } /** * Tells whether current user is a valid one. * * @return boolean */ public function isValid() { return $this->getAccountId() && $this->isValidGateway(); } /** * Returns users account id * * @return string(?) */ public function getAccountId() { return $this->accountId; } /** * Tells whether user uses a valid gateway or not * * @return boolean */ private function isValidGateway() { $ip = $_SERVER['REMOTE_ADDR']; //$gateways = $config->get('valid_gateways'); $gateways = array( '213.226.131.21', '213.226.131.132', '213.226.131.133', '213.226.131.154', '213.226.131.141', '213.226.131.149', '213.226.131.151', '84.15.15.4', '84.15.15.5', '84.15.15.10', '84.15.15.11', '84.15.15.12', '213.190.37.235', '195.189.142.0/23', ); foreach ($gateways as $gateway) if (self::ipInRange($ip, $gateway)) return true; return false; } /** * Tells whether ip is in ip range. * Note: could be moved into a separate library. * * @param string $ip * @param string $ipRange * @return boolean */ private static function ipInRange($ip, $ipRange) { if (false === strpos($ipRange, '/')) return $ip == $ipRange; list($net, $mask) = split('/', $ipRange); $ipNet = ip2long($net); $ipMask = ~((1 << (32 - $mask)) - 1); $checkIp = ip2long($ip); $checkIpNet = $checkIp & $ipMask; return $checkIpNet == $ipNet; } } >
© 2007 UAB "Bite Lietuva" Solution: Metasite Business Solutions