За последние 24 часа нас посетили 42456 программистов и 1816 роботов. Сейчас ищут 845 программистов ...

как написать изящнее (проверка параметра из адресной строки)

Тема в разделе "PHP для новичков", создана пользователем cypok, 18 дек 2009.

  1. cypok

    cypok Активный пользователь

    С нами с:
    2 авг 2009
    Сообщения:
    9
    Симпатии:
    0
    друзья,

    проверяем параметр page, он должен существовать и быть целым числом в диапазоне от 1 до $n, иначе задаём $page=0

    я сделал это таким образом:

    Код (Text):
    1. //проверка существования параметра page
    2.  
    3. if (!empty($_GET['page']))
    4.  
    5. {
    6.  
    7. $page=$_GET['page'];
    8.  
    9. //проверка что $page в диапазоне от 1 до $n
    10.  
    11. if (($page>=1)&&($page<=$n)) $page=round($page);
    12.  
    13. else $page=0;
    14.  
    15. }
    16.  
    17. //если параметр page не существует
    18.  
    19. else $page=0;
    мне кажется что не слишком красиво :?
    как сделать проще, красивее? все ли тут дыры прикрыты?
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    $page = ( $page > 0) ? (int) $page : 0;
     
  3. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    $page = ( $_GET['page'] > 0 && $_GET['page'] <= $n) ? (int) $_GET['page'] : 0;
    или
    $page=(int)$_GET['page'];
    $page = ( $page > 0 && $page<=$n) ? $page : 0;
     
  4. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    isset($_GET['page']) вроде кошерней
     
  5. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    iliavlad, для УРЛа?page isset() даст true, потому что $_GET['page'] !== null. Так что кошерность спорная.
     
  6. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    PHP:
    1.  
    2. <?php
    3. function get($key, $type='mixed', $from='GET', $regexp = array())
    4. {
    5.     $source = null;
    6.     $value  = null;
    7.     switch( strtoupper($from) )
    8.     {
    9.         case 'POST':
    10.             $source =& $_POST;
    11.         break;
    12.         case 'GET':
    13.         default:
    14.             $source =& $_GET;
    15.         break;
    16.     }
    17.     if(isset($source[$key]))
    18.     {
    19.         $value = $source[$key];
    20.         if($regexp && isset($regexp['reg']))
    21.         {
    22.             if(!isset($regexp['type']))
    23.             {
    24.                 $regexp['type'] = null;
    25.             }
    26.             switch($regexp['type'])
    27.             {
    28.                 case 'm':
    29.                     $value = array(
    30.                         'flag'  =>preg_match($regexp['reg'],$value),
    31.                         'value' =>$value,
    32.                     );
    33.                 break;
    34.                 case 'r':
    35.                 default:
    36.                     if(!isset($regexp['replace']))
    37.                     {
    38.                         $regexp['replace'] = '';
    39.                     }
    40.                     $value = preg_replace($regexp['reg'],$regexp['replace'],$value);
    41.                 break;
    42.             }
    43.         }
    44.         switch($type)
    45.         {
    46.             case 'int':
    47.                 $value = (int) $value;
    48.             break;
    49.             case 'float':
    50.                 $value = (float) $value;
    51.             break;
    52.             case 'array':
    53.                 $value = (array) $value;
    54.             break;
    55.             case 'string':
    56.                 $value = (string) $value;
    57.             break;
    58.             case 'object':
    59.                 $value = (object) $value;
    60.             break;
    61.         }
    62.     }
    63.     return $value;
    64. }
    65. $_GET['page'] = 'A777MP97';
    66. var_dump(get('page', 'int'));
    67. var_dump(get('page', 'float'));
    68. var_dump(get('page', 'array'));
    69. var_dump(get('page', 'object'));
    70. var_dump(get('page'));
    71. var_dump(get('page', 'int',null,array('reg'=>'~\D+~')));
    72. ?>
    73.  
    как-то так;)