Бред... Так никто не делает, если ты не знал. И вообще это не рассчитано на большие числа, если ты не знал. Тут может быть капец во многих местах. Таких как: Код (PHP): $int=(int)'s1tring1'; $int1=(int)'1s1tring1'; var_dump($int, //int(0) $int1); //int(1) echo (int)9999999999; //1410065407 echo (int)'9999999999'; //2147483647 Тут то и настанет капец, с проверкой на целочисленный тип. Ибо он не может быть больше 2147483647. И будешь биться головой, на, что же блин такую проверить, то!
Всм так, чтоли? Код (PHP): $post='String'.(int)$_POST['int']; А смысл? Ладно это когда один пост! Код (PHP): $post=(int)$_POST['int']; И прям по любому надо int, чтобы был! Не всегда это нужно, php бывает и сам приводит и знает, что нужно и когда нужно! Ну все равно лучше в некоторых местах обезопаситься и сделать проверки, как нужно тебе, чтобы на верочку было! Чтобы не привелось к хз чему... =)
А ну это то, да... Я имел ввиду другое то, что выше... Никто так не пишет... Хотя в твоем случае (int) $_POST['id'] Если будет число больше 2 миллиардов 147 миллионов, например 2.148 миллиарда, то все гиблое дело!
Не ты не понял, я про то, что больше число не запишет, если нужно будет... Будет только записывать 2.147..... миллиарда, а 3 миллиарда не сможет записать, вот если взять номера сотовых телефонов там уже нужно bigint. Соответственно (int) уже не покатит, а значит уже и не будет приведения, только экранирование если только применять.
Так делают почти все я имею в виду Код (Text): $post=(int)$_POST['int']; даже вроде на этом форуме так сделано. Это описано в почти всех учебниках, и я против этого по причине
Не пойму, почему только "2.147..... миллиарда"? Написано же, Давно пора переходить на 64 бита. Кроме того, можно передавать числа в 16(и более)-ричной системе.
1 - немало серверов крутятся на 32-х битах, иногда это даже дело принципа 2 - зачем умышленно завышать системные требования своего продукта если можно этого не делать ? Добавлено спустя 2 минуты 25 секунд: Да не надо никого защищать, надо просто понимать что делаешь и зачем. Всё. Т.е избегать костылей и ошибок в коде. Защита это когда безошибочный код под угрозой, а "защита" от SQL-инйекций это не защита а простой "багфикс"
С этим я с тобой не совсем согласен... Защищать нужно, делать приведения тоже нужно когда есть необходимость, я не говорю, что это нужно делать на каждом шаге. Связи с тем, что дынные могут быть отправлены с другого ресурса, то отправить он может, что угодно и когда угодно. Тем более я не думаю, что у тебя допустим пользователей и их ид будет равен больше 2 миллиардов =) Или например мелкие какие - то расчеты, которые вообще не будут больше миллиона =) Так, то php сам приводит во что нужно, но я много раз замечал, что он бывает ху йню приводит, не то, что нужно. Если бы все так было бы просто эти бы типы данных вообще бы не придумали. Хотя с другой стороны в них нет необходимости! Как уже и говорили, php непредсказуем, по этому тут все так не обычно и телесно =) Но это нормально
смысл сильно меняется? че ты несёшь? =) потому что 2012 год на дворе. Только я не понимаю, какая разница между 32 бита и 64. (для идиотов, готовых начать мне объяснять про размер числа: разницы в данном контексте нет, т.к. и 32 бита и 64 позволяют записать числа конечного диапазона.)
Ты их собираешься делить или умножать? *INT нужен для чисел, для просто набора цифр используйте VARCHAR, зачем усложнять жизнь.
Ты сам понимаешь, что говоришь? А, что такого числа не бывает? 9275464378532? Тебе конкретный подход говорят. Причем тут вообще умножение? Тут говорится за то, что приведение к типу (int) числа как сотовый телефон не удастся, на этом вся логика. Еще скажи, что число медленнее строки =)
он грит, что один хрен, что число, что char по факту так и есть. телефонными номерами не оперируют в нагруженном контексте.
Причем тут варчар вообще? Код (PHP): $a='9146425145'; //строка Хочу число получить. А php мне скажет, что ты дурак, такого не получится сделать, я знаю только int(2147483647). потому, что: Код (PHP): $a=(int)'9146425145'; //int(2147483647) А тут php скажет, что мы вообще ебанулись: Код (PHP): $a=(int)9146425145; //int(556490553) А здесь так вообще башню сорвет: Код (PHP): $a=9146425145; //float(9146425145) Ему по х уй на наше мнение! float, бл ять тут!
ДА Любой язык программирования предсказуем, я в 89-м году ещё таблицу умножения не знал, а на 100% мог предсказывать Бейсик Они все будут в string и срать на всё, надо их в базу кидать, напиши блин Код (Text): SELECT * FROM `table` WHERE `word`=0x4841434b454420425920564c4144534f4e; Где 4841434b454420425920564c4144534f4e получи с помощью bin2hex($_GET['херня']) и не важно откуда блин он пришёл... Добавлено спустя 2 минуты 1 секунду: Я на этой странице пишу млин Код (Text): Формат це: /блин Посмотрите исходники HTML-файла, фраза ни чем не обработана и не отфильтрована, а сервак на котором этот форум почему-то не упал нихера Добавлено спустя 7 минут 28 секунд: Пользователей нет, расчётно нет... А если я как злобный хакер запощу 2 млрд сообщений/коментов/топиков/юзеров, сам выбирай что (через разные прокси, или другие пути) даже если у меня 10 лет времени уйдёт, то я точно знаю что уложу твой скрипт... Добавлено спустя 3 минуты 6 секунд: Your и да, я вижу что ты понимаешь о чём речь, не воспринимай мои слова за наезд... Помоги лучше объяснить людям разницу между "работает на практике" и "работает всегда со всеми видами данных на всех процессорах начиная с РНР3 а может и раньше"
Я нет... Был какой-то момент когда я думал что твой стаж на форуме подразумевает умение читать, но в принципе подозревал что будет как всегда...