друзья, проверяем параметр page, он должен существовать и быть целым числом в диапазоне от 1 до $n, иначе задаём $page=0 я сделал это таким образом: Код (Text): //проверка существования параметра page if (!empty($_GET['page'])) { $page=$_GET['page']; //проверка что $page в диапазоне от 1 до $n if (($page>=1)&&($page<=$n)) $page=round($page); else $page=0; } //если параметр page не существует else $page=0; мне кажется что не слишком красиво :? как сделать проще, красивее? все ли тут дыры прикрыты?
$page = ( $_GET['page'] > 0 && $_GET['page'] <= $n) ? (int) $_GET['page'] : 0; или $page=(int)$_GET['page']; $page = ( $page > 0 && $page<=$n) ? $page : 0;
iliavlad, для УРЛа?page isset() даст true, потому что $_GET['page'] !== null. Так что кошерность спорная.
PHP: <?php function get($key, $type='mixed', $from='GET', $regexp = array()) { $source = null; $value = null; switch( strtoupper($from) ) { case 'POST': $source =& $_POST; break; case 'GET': default: $source =& $_GET; break; } if(isset($source[$key])) { $value = $source[$key]; if($regexp && isset($regexp['reg'])) { if(!isset($regexp['type'])) { $regexp['type'] = null; } switch($regexp['type']) { case 'm': $value = array( 'flag' =>preg_match($regexp['reg'],$value), 'value' =>$value, ); break; case 'r': default: if(!isset($regexp['replace'])) { $regexp['replace'] = ''; } $value = preg_replace($regexp['reg'],$regexp['replace'],$value); break; } } switch($type) { case 'int': $value = (int) $value; break; case 'float': $value = (float) $value; break; case 'array': $value = (array) $value; break; case 'string': $value = (string) $value; break; case 'object': $value = (object) $value; break; } } return $value; } $_GET['page'] = 'A777MP97'; var_dump(get('page', 'int')); var_dump(get('page', 'float')); var_dump(get('page', 'array')); var_dump(get('page', 'object')); var_dump(get('page')); var_dump(get('page', 'int',null,array('reg'=>'~\D+~'))); ?> как-то так