Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
function inMiddleEast() { $addr = $_SERVER['REMOTE_ADDR']; $skipfile = BINARY_PATH . "/skip.txt"; $skip = file_get_contents($skipfile); if(strstr($skip,$addr)){ $middle_eastern = 1; }else{ $ip = sprintf("%u", ip2long($addr)); $handle = fopen("/path/to/IpToCountry.csv", "r"); $row = 1; while (($buffer = fgets($handle, 4096)) !== FALSE) { $array[$row] = substr($buffer, 1, strpos($buffer, ",") - 1); $row++; } $row_lower = '0'; $row_upper = $row; while (($row_upper - $row_lower) > 1) { $row_midpt = (int) (($row_upper + $row_lower) / 2); if ($ip >= $array[$row_midpt]) { $row_lower = $row_midpt; } else { $row_upper = $row_midpt; } } rewind($handle); $row = 1; while ($row <= $row_lower) { $buffer = fgets($handle, 4096); $row++; } fclose($handle); $buffer = str_replace("\"", "", $buffer); $ipdata = explode(",", $buffer); /* $ipdata[4] and [5] contains the country ID ng block holder so just need to identify the IDs for middle eastern countries http://en.wikipedia.org/wiki/Middle_East reason why we do not use the [6]th ID (full country name) is because countries tend to use local country names and/or extended characters for their country names. */ $middle_east = array('EGY','EGYPT','TR','TUR','IQ','IRQ','KW','KTW','BR','BHR','OMN','OM','QA','QAT','SAU','SA','AE','ARE','JO','JOR', 'LB','LBN','SY','SYR','IR','IRN','PK','PAK','AF','AFG'); $middle_eastern = in_array($ipdata[4],$middle_east) || in_array($ipdata[5],$middle_east) ? true : false; } return ($middle_eastern); }
This paste will be private.
From the Design Piracy series on my blog: