Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Для чего используется (int)?
 
 автор: kras-nastya   (10.02.2008 в 22:50)   письмо автору
 
 

Подскажите, для чего используется в таких ситуациях (int), не могу найти в интернете.

$status=(int)$HTTP_GET_VARS{'status'}; 

   
 
 автор: afdm   (10.02.2008 в 22:56)   письмо автору
 
   для: kras-nastya   (10.02.2008 в 22:50)
 

преобразование переменной к определенному типу. В данном случае к типу integer, т.е. целое число.

   
 
 автор: kras-nastya   (10.02.2008 в 22:58)   письмо автору
 
   для: afdm   (10.02.2008 в 22:56)
 

Т.е. если переменная и так была int - то она не поменяется, а если была чем-то другим, то преобразуется, так?

А это случайно не используется для защиты БД mysql от хакеров? в смысле запросы пользователей к базе так обрабатывать? (просто у меня знакомый программист на мой сайт поставил, а я сейчас у него спросить не могу...)

   
 
 автор: Unkind   (10.02.2008 в 23:03)   письмо автору
 
   для: kras-nastya   (10.02.2008 в 22:58)
 

> А это случайно не используется для защиты БД mysql от хакеров?
Да. Как правило, в SQL-запросе числа не берутся в кавычки и апострофы, поэтому экспейпирование не подходит. Нужно приводить к численному типу принудительно.

   
 
 автор: Lstasss   (11.02.2008 в 01:00)   письмо автору
 
   для: Unkind   (10.02.2008 в 23:03)
 

а не быстрее ли просто
$var*1
или
 $var-0
?

   
 
 автор: afdm   (11.02.2008 в 01:07)   письмо автору
 
   для: Lstasss   (11.02.2008 в 01:00)
 

ну это уж совсем какой-то извращенный способ. для этого собственно и существует (int)

   
 
 автор: Unkind   (11.02.2008 в 01:32)   письмо автору
 
   для: Lstasss   (11.02.2008 в 01:00)
 

> to: Unkind (10.02.2008 в 23:03)
> а не быстрее ли просто
Проверьте. Я таким вопросом никогда не задавался.

   
 
 автор: Саня   (11.02.2008 в 01:30)   письмо автору
 
   для: kras-nastya   (10.02.2008 в 22:58)
 

> Т.е. если переменная и так была int - то она не поменяется,
> а если была чем-то другим, то преобразуется, так?
Именно так.

Такая форма (каноническая называется) приведения типа пришла от языка си. В си можно двумя способами изменить тип переменной: var1 = (int)var2; и var1 = int(var2);. Так же и в php: $var1 = (int)$var2; и $var1 = intval($var2); (только непонятно почему функциональная форма приведения типа в php выглядит по-другому).

P. S.
Все данные, передающиеся в скрипт методами post, get или cookies имеют строковый тип, даже если данные содержат только цифры. Так что стоит всегда проверять данные, пришедшие от пользователя.

   
 
 автор: Akdmeh   (11.02.2008 в 08:46)   письмо автору
 
   для: Саня   (11.02.2008 в 01:30)
 

Как подсказывает небольшой опыт,эта функция очень полезная. Вот пример:
$var=1.53;
$var=(int)$var;
echo $var;
//возвратит 1
//но если нужно проверить,цифры ли там,
//лучше использовать примерно такое:
$evil='1.58=я злой код,который хочет заныкаться';
if (is_numeric($evil))
echo 'Молодец,все работает!';
//и далее код
else {
echo 'Нужны цифры! Ошибка!';
exit;
}

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования