За последние 24 часа нас посетили 116045 программистов и 3043 робота. Сейчас ищут 1418 программистов ...

Функция очистки GET запроса

Тема в разделе "PHP для новичков", создана пользователем bkm, 23 авг 2010.

  1. bkm

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

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    Имеется функция очистки гет-запроса. Передается целое число - id страницы

    PHP:
    1. # функция чистки GET запроса
    2. function filter_get($get_id){
    3.  
    4.     $get_id = substr($get_id, 0, 7); //укорачиваем запрос до 7 знаков
    5.     $get_id = preg_replace("/[^\w\x7F-\xFF\s]/", "", $get_id); # каленым железом выжжем все "ненормальные" символы
    6.     $get_id = str_replace(chr(160), "", $get_id); //Удаляем неразрывные пробелы
    7.     $get_id = preg_replace("/ +/", "", $get_id); //сжимаем двойные пробелы
    8.  
    9. return $get_id;
    10. }
    далее...

    PHP:
    1. $id = intval(filter_get($_GET['id']));
    2. if ($id != "0" && is_int($id)){
    3. // тут мой код
    4. }
    В принципе меня такой вариант устраивает. Но хотелось бы узнать мнение экспертов. Может пробелы убирать в самой регулярке? Сделать код более компактным.
     
  2. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    хуйни какойто вычитали :)
    $id = isset($_GET['id'])?(int)$_GET['id']:0;

    if($id > 0)
    {
    //code
    }
     
  3. engager

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

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    Апельсин
    ну этот код тоже не идеален при неположительных значениях.
    понятное дело, что id врядли будет отрицательным.
    но нулем вполне может быть.
     
  4. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    engager
    следуя из этой строки if ($id != "0" && is_int($id)){, ид должен быть плюсовым числом и не ровняться 0. Потому те мои три строчки удовлетворяют требуемым запросам :) Минусовые значения просто не будут браться во внимание, вызывая else, ну или редирект на "пошелнах.пхп", для любопытных))
    можно еще тыкнуть abs(), но в данном случае нет смысла.
     
  5. engager

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

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    ну правильно, при отрицательных и нулевых значениях будет пшолнахъ, а это может не соответсвовать логике приложения.
    я вот же ж к чему.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    engager
    ну тогда надо написать другое условие. но городить огород все равно нет нужды =)