За последние 24 часа нас посетили 18105 программистов и 1696 роботов. Сейчас ищут 1544 программиста ...

Функция

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

Статус темы:
Закрыта.
  1. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Помогите написать функцию проверки данных. Надо проверить являються ли в поле данные типа int, если да то
    $a = int ($a);\
    Пробовал функцией is_int, но какие данные не вводи передает FALSE. Помогите сделать. Заранее спасибо.
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    как пробовал?
     
  3. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    вопрос решили :)
     
  5. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Подсказали is_numeric, все нормально. Спасибо ;)
     
  6. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    С is_numeric есть определённые проблемы

    PHP:
    1. <?php
    2. $var = '0xFF';
    3. print '<br />' . intval($var);
    Код (Text):
    1. 1
    2. 0
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    бляха, муха.
    Повторяю, тебе там достаточно приводить к int.
     
  8. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Luge Мне в функции это все надо сделать, что бы приводить к int мне надо знать типа данных в поле.

    Вот еще одна проблемка назрела с использованием функции. Проблема в поле $login = check ($login);. Я не могу воспользоваться $login. Вот код там где использую:
    PHP:
    1. <?php
    2. include ("mysql.php");
    3. include ("check.php");
    4. $login = $_POST['login'];
    5. $login = check ($login);
    6. ?>
    Вот сама функция:
    PHP:
    1. <?php
    2. function check($info)
    3. {
    4. $info = htmlspecialchars ($info, ENT_QUOTES);
    5. $info = mysql_real_escape_string ($info);
    6. $info = trim ($info);
    7. if (is_numeric ($info))
    8. $info = (int) $info;
    9. }
    10. ?>
     
  9. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Sergey89
    С этим тоже проблема как и с is_numeric. Если же в поле будет '1fgf', то результат будет 1.
    Как здесь быть?
     
  10. Vitas

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

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    А что должно происходить если передано не-число? Ошибка?
     
  11. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Если передано не число, то не добавляеться строка $a = (int) $a; если же число, то эта строка добавляеться.
     
  12. Vitas

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

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    У вас правильный код.

    upd: а зачем, собственно, добавлять эту строку?
     
  13. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Код правильный, но работает не верно. В разных случаях вместо 0, передает 1. Строка нужна что бы обезопасить данные которые передаються. Помогите!!!
     
  14. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    А ретурн кто делать будет???
     
  15. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    PHP:
    1. <?php
    2.  function check($info)
    3.  {
    4.  $info = htmlspecialchars ($info, ENT_QUOTES);
    5.  $info = mysql_real_escape_string ($info);
    6.  $info = trim ($info);
    7.  if (is_numeric ($info))
    8.  $info = (int) $info;
    9.  return ($info);
    10.  }
    11.  ?>
    Так? И это даст возможность использовать функцию?
     
  16. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Ага, если без этой строки педеать не int, а, например, string, то этот самый string начнет пожирать данные в БД сразу после записи :lol:
    Вот те вся проверка:
    PHP:
    1. $a=$a/1;
    Если будет передана строка, то переменная $a примет int'овое значение 0 :)
     
  17. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Solution!
    PHP:
    1. <?
    2. function the_int($var)
    3. {
    4.     $parr=(string)intval($var);
    5.     return $parr==$var?true:false;
    6. }
    :)
     
  18. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
  19. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Вот решил проблемку, оцените:

    PHP:
    1. <?php
    2. function check($info)
    3. {
    4. $info = htmlspecialchars ($info, ENT_QUOTES);
    5. $info = mysql_real_escape_string ($info);
    6. $info = trim ($info);
    7. $info = substr ($info, 0, 50);
    8. $type = intval ($info);
    9. $type = (string) $type;
    10. if ($type == $info)
    11. $info = (int) $info;
    12. }
    13. ?>
     
  20. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Трындец функция. И это для проверки, является ли строка числом.
    1. Сначала систятся хтмл-теги
    2. Потом экранируются кавычки
    3. Далее обрезаются пустоты
    4. Обрезается до 50 символов
    5. Это месиво приводится к числу
    6. Число приводится к строке
    7. Идет проверка, равна ли отредактированная-числострока и отредактированная строка, если да, то отредактированную строку снова переводим в число.
    Это караул, товарищи.
    Даже если входящая переменная не равна числу, то её использовать все равно нельзя будет. ЗАЧЕМ ВСЕ ЭТО?
     
  21. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Kreker
    Тут ,как я понял, типа строка обрабатывается по-всякому, для дальнейшего использования, а потом если оказывается, что в строке только цифры, то еще и присваивается типа int :lol:
     
  22. Vitas

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

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Это п****ц...
     
  23. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Kreker
    Что можете посоветовать? И проверка не только, являеться ли строка числом. Если string, то
    PHP:
    1. $info = htmlspecialchars ($info, ENT_QUOTES);
    2. $info = mysql_real_escape_string ($info);
    3. $info = trim ($info);
    4. $info = substr ($info, 0, 50);
    если же int, а для того что бы определить int или нет выполняеться:
    PHP:
    1. $type = intval ($info);
    2. $type = (string) $type;
    3. if ($type == $info)
    если int, то
    PHP:
    1. $info = (int) $info;
     
  24. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Типа если int, то пускай так и остается :lol:
     
  25. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    [vs]
    Так if проверяет int или нет :)
     
Статус темы:
Закрыта.