За последние 24 часа нас посетили 32945 программистов и 1821 робот. Сейчас ищет 881 программист ...

Ограничение Get_['id']

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

  1. -Vladimir-

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

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    файл.php?id=номер

    Как можно ограничить интервал id, например, от 1 до 1000? А если id будет равен 0 или >1000, то тогда останавливается загрузка страницы и выскакивает сообщение.
     
  2. LuckyScrat

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

    С нами с:
    16 июн 2009
    Сообщения:
    176
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1.  
    2. if($_GET['id']<1 or $_GET['id']>1000){
    3. echo 'сообщение';
    4. }
    5.  
    в чем была сложность придумать самому, если задачу полностью формализовал?
     
  3. -Vladimir-

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

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Запутался немного)

    Как можно ещё сделать, чтобы id был только числовой? А если вдруг id будет с буквами или другими символами, то echo 'сообщение';
     
  4. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    -Vladimir-

    if(ctype_digit($_GET['id']) && ($_GET['id'] > 1 && $_GET['id'] < 1000))
     
  5. Devzirom

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

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    PHP:
    1. <?php
    2. //Проверяем если в запросе id
    3. if(!isset($_GET['id'])) {
    4.     exit('id не задан');
    5. } else {
    6.     sscanf($_GET['id'], '%[0-9]', $id);
    7.     //Если $id == NULL - это значит, что в запросе, помимо цифр находятся ещё какие-то символы
    8.     //Или же id просто пуст(файл.php?id=)
    9.     if($id == NULL) {
    10.         exit('id указан не правильно');
    11.     } else {
    12.         //Если больше 0 и меньше 1000
    13.         if($id > 0 && $id < 1000) {
    14.             echo('id указан правильно!');
    15.         } else {
    16.             exit('id указан не правильно');
    17.         }
    18.     }
    19. }
    20.  
    21. ?>
    Все это сократим
    PHP:
    1. <?php
    2. if(!isset($_GET['id'])) exit('id не задан');
    3. sscanf($_GET['id'], '%[0-9]', $id);
    4. if($id < 1 || $id > 1000) exit('id указан не правильно');
    5. echo('id указан правильно!');
    6. ?>
     
  6. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Devzirom
    Мне кажется, что мой вариант все-таки короче)))

    PHP:
    1.  
    2. <?php
    3. if(ctype_digit($_GET['id']) && ($_GET['id'] > 1 && $_GET['id'] < 1000))
    4.     echo $_GET['id'];
     
  7. Devzirom

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

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь

    Notice: Undefined index: id in D:\Documents\localhost\htdocs\engine\test.php on line 2
     
  8. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Кто учил вас так писать:
    Разве не наглядней то же самое:
    PHP:
    1. <?php
    2. if(!isset($_GET['id'])) {
    3.     exit('id не задан'); 
    4. }
    5.  
    6. sscanf($_GET['id'], '%[0-9]', $id);
    7.  
    8. if($id == NULL) {
    9.     exit('id указан не правильно');
    10. }
    11.  
    12. if($id < 1|| $id > 1000) {
    13.     exit('id указан не правильно');
    14. }
    15.  
    16. echo('id указан правильно!');
    17.  
    18.  
    19.  
     
  9. Devzirom

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

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    PHP:
    1. <?php
    2. echo('Меня никто не учил!');
    3. ?>