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

Форум PHP

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

 

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

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

тема: Как определитьявляется ли переменная целым числом
 
 автор: добряк   (11.03.2013 в 22:16)   письмо автору
 
 

Здравствуйте.
Извините запутался., может у кого свежо по памяти.
Как определить является ли переменная числом и число целое
Дело в том что если
is_int(1б)

Функция не вернет ничего

Спасибо.

  Ответить  
 
 автор: psychomc   (11.03.2013 в 22:54)   письмо автору
 
   для: добряк   (11.03.2013 в 22:16)
 

вообще-то в любом случае вернет либо true либо false. в вашем случае однозначно false. кстати про кавычки не забыли?

  Ответить  
 
 автор: добряк   (11.03.2013 в 23:14)   письмо автору
 
   для: psychomc   (11.03.2013 в 22:54)
 

Ничего не возврашает, я же и так и отладочном режиме пробую
Вот есть переменна типа $_GET.['id']
если должны быть целые натуральные числа, а кто то воткнет ?id=1ю3 и сайт...... висит.
Теперь подряд очередь, и проститесь с сайтом

  Ответить  
 
 автор: btr   (11.03.2013 в 23:21)   письмо автору
 
   для: добряк   (11.03.2013 в 23:14)
 

как мне здесь же здраво подсказывали: просто написать
$id = (int)$_REQUEST["id"]

  Ответить  
 
 автор: добряк   (11.03.2013 в 23:27)   письмо автору
 
   для: btr   (11.03.2013 в 23:21)
 

$id = (int)$_REQUEST["id"]

Еще больше загадок

Дело в том, что $_GET['id'] возвращает строковый тип, это раз
Если там 1Ю2, то дальше еще хуже

(int) (1Ю2 )вернет 1

  Ответить  
 
 автор: psychomc   (11.03.2013 в 23:40)   письмо автору
 
   для: добряк   (11.03.2013 в 23:14)
 

что за бред... что вы потом делаете с этим параметром? подставляете в запрос? вам всё правильно сказали - преобразуйте в целое вне зависимости от того что пришло. и всё будет работать так как надо. неужели принципиально, чтобы id 1Ю2 после преобразования было 12?

  Ответить  
 
 автор: добряк   (11.03.2013 в 23:52)   письмо автору
 
   для: psychomc   (11.03.2013 в 23:40)
 

Для меня принципиально, что если 1ю2, то ответить что запрос плохой и ничего не делать.
А вы не кричите на меня.
Ко мне тут bingo bot и msnbot залетели штук 30 и стали дупасить вот такой фигней каждую секунду по 5-10 раз. А если вам не известны таие вещи, то и не надо оскорблять. В сторонке побудьте, может добрые люди и найдутся, кто хлебнул или не хочет.
Только не грубите пожалуйста

От хостера письмо
Ваш аккаунт был приостановлен. Информация о приостановке заказа :

Дата окончания: 23/03/2013
Причина приостановки: Get запросы GET \xd1\x81\xd1\x92\xd1\x81\xe2\x80\x93\xd1\x81\xd1\x93\xd0\xb2\xd1\x92\xe2\x84\xa2\xd1\x81\xd1\x92\xd0\xb2\xc2\xb5\xd1\x81\xd1\x93\xd1\x81\xe2\x80\xba\xd1\x81\xd1\x92\xd1\x81\xe2\x80\x93

грузят сервер, и создают аномальную нагрузку на сервер.
Пожалуйста свяжитесь с нами как можно быстрее для принятия мер и продления вашей услуги.
------------------------------
Дальше боты перебирают все варианты, все кодировки, языки

Короче посещаемость была 8000 теперь 300 с трудом и ползу вниз, хотя не гружу сервер, все параметры в норме

  Ответить  
 
 автор: Valick   (12.03.2013 в 00:07)   письмо автору
 
   для: psychomc   (11.03.2013 в 23:40)
 

не обращайте внимания, такого хама давно небыло на форуме

  Ответить  
 
 автор: добряк   (12.03.2013 в 00:20)   письмо автору
1.7 Мб
 
   для: Valick   (12.03.2013 в 00:07)
 

Так нет, вот статья, не я писал, но у меня еще хуже вышло. Меня они и раньше пробовали, но не сломали, а 1 марта, полностью разнесли
Тема: Помогите атакует поисковый робот! bingbot (Прочитано 2761 раз)
http://joomlaforum.ru/index.php/topic,192646.0.html
Таких статей много

У меня такая же ситуация, но не надо на личности пожалуйста переходить, у каждого может такая беда случится
Вчитайтесь пожалуйста хоть в эти строки

Кстати файл robots.txt они вообще не признают, гугл в том же числе( не все но период обхода ему так не задать)
Меня обходит гугл со скоростью 1-2 запроса в секунду и все нормально, ну когда добавились эти в панику бросился хостер и отключил сайт. С гуглом нагрузка на сайт 10-15 процессов, а с ними все вылетело.
Предполагаю, что закрыться от них можно через . htaccess. Но Гугл и другие то же делат нестандартыные запросы и сайт подвисает, а то в 503 уходит

Прилагаю файл, результатов этих роботов
Борьба до крови Сейчас меньше, 503 только 84, зато повреждений тьма, сайт упал.

  Ответить  
 
 автор: btr   (12.03.2013 в 00:57)   письмо автору
 
   для: добряк   (12.03.2013 в 00:20)
 

я конечно тоже вроде бота :) но в принципе есть резон в посте psychomc... ведь Вы ждете определенного id? может, устроить проверку, а подходит ли (int)$_request('id') под определенный диапазон (нп с 1 до 2456) если нет, ексит нафик :)

еще вариант: если strval((int)$_request['id']) == $_request['id'] тогда работать, если нет - явно хрень :)

  Ответить  
 
 автор: добряк   (12.03.2013 в 01:13)   письмо автору
 
   для: btr   (12.03.2013 в 00:57)
 

Я 4 года не попадал, дырки не видел, но вот нашлись умные боты, методом случайного перебора и периодических заходов, нашли место и все рухнуло. Но это их профессия, там же не один человек и не те мощности

Я немного в сильном шоке от таких событий. Пробую разные варианты - что то где то не то, дырочка остается

(int)$_request('id') - я не долго, но попробовал, что то не пошло, там сложней ситуация, когда используют сложные комбинации кодировок и языков.
У меня много примеров странных запросов, я их когда пускаю то пробивают.
Вообще, мне сейчас пришла одна не плохая мысль, возможно лучшая, а может просто достаточная.
Таймаут я сделал, не пробьют. если зависну то выскочу. Другие заглушки понавешал.
На фотке видно, что 503 пошли вниз, завтра их не будет совсем. Сечас ботов нет, кроме Гугла. Но они придут и знают слабые места. Они с перерывом 2-3 недели. Либо добьют, либо ...
Но вот это место. Буду проверять. Если кто даст дельный совет, благодарен буду и в долгу не останусь.
Извините если я не заметил и что не так написал, прошу прощения у всех

  Ответить  
 
 автор: Valick   (12.03.2013 в 10:02)   письмо автору
 
   для: добряк   (12.03.2013 в 01:13)
 

if(!is_numeric($_GET['id'] )) exit();

  Ответить  
 
 автор: добряк   (12.03.2013 в 13:57)   письмо автору
 
   для: Valick   (12.03.2013 в 10:02)
 

Всем хорошо, но точки пропустит и еще там что то

А если регулярное, пройдет?
    
$id_get = trim($_GET['id']) ;
 $exit  = preg_match( "/[^0-9]{1,}/i" , $id_get) ;

Если $exit ==1, то в случае робота ответ 400, а человеку внушение

Есть в регулярном неточность?

P.S.
Когда в запросе дается то, что не существует в базе, то поиск произойдет по всей базе и время работы будет самым максимальным. Если подряд дать такие запросы - фатальная
Представьте если бы был в Гугле поиск по точному совпадению несуществующего слова и не было бы отсева, он бы это слово искал по все базе "вечность"

  Ответить  
 
 автор: Igorek   (12.03.2013 в 14:29)   письмо автору
 
   для: добряк   (12.03.2013 в 13:57)
 

А чем плох вариант от btr?
Только там надо тождественное равенство еще добавить, иначе вариант типа '0e1' прокатит.

<?php
$test 
= array(
    
'12',
    
'1.34',
    
'0e1',
    
'string',
);

echo 
'<pre>';
array_map(function($v) {
  
var_dump(strval((int) $v) === $v);
}, 
$test);

Выведет:
bool(true)
bool(false)
bool(false)
bool(false)


т.е. вот проверка strval((int) $v) === $v. Преобразуем строку в инт, потом обратно в строку и сравниваем с исходной.
PS или так (string)(int) $v === $v

  Ответить  
 
 автор: добряк   (12.03.2013 в 15:16)   письмо автору
 
   для: Igorek   (12.03.2013 в 14:29)
 

Я вчера пробовал от btr , где то слабинку нашел, дальше не стал анализировать.
По идее, если числа, то надо проверять еще на максимальную длину.

Самое коварное поиск по словам или фразам в базе.
Если слова нет "укпаукпаукпакепке343вввпенрног" будет копать всю базу, аптайм растет, поисковики рейтинг опускают

Я что то вроде последнего тоже пробовал, но просто проверял на $v == (int) $v, как то не очень.
Но сам ваш алгоритм, оченнь полезный во многих случаях жизни.

Спасибо за вариант, я попозже изучу, но может ребятам интересно будет тоже

  Ответить  
 
 автор: Igorek   (12.03.2013 в 16:18)   письмо автору
 
   для: добряк   (12.03.2013 в 15:16)
 

В догонку, предложенный вариант (string)(int)$v === $v, работает только, если число в строке не больше PHP_INT_MAX, т.е.
<?php
$v 
'9999999999999999999999999999999999';
var_dump((string)(int)$v ===$v); //false

т.к. (int)$v в данном случае равно PHP_INT_MAX.

А $v == (int)$v всегда true, для gettype($v) == 'string', т.к. при сравнении числа со строкой строка приводится к int.
<?php
$v 
'str';
var_dump($v == (int)$v); // true

  Ответить  
 
 автор: добряк   (12.03.2013 в 17:02)   письмо автору
 
   для: Igorek   (12.03.2013 в 16:18)
 

Я на регулярном установил. Вроде устраивает на все варианты. Ваше предложение интересное. Может дублером поставлю

  Ответить  
 
 автор: psychomc   (15.03.2013 в 11:53)   письмо автору
 
   для: добряк   (12.03.2013 в 17:02)
 

думаю зря вы пытаетесь от ддос и т.п защититься средствами PHP. и что вы будете делать, когда ваши боты начнут отправлять нормальные запросы? жесточайшей выпилите этот кусок ненужного кода?

  Ответить  
 
 автор: добряк   (15.03.2013 в 12:24)   письмо автору
 
   для: psychomc   (15.03.2013 в 11:53)
 

Сам ддос - частые запросы подавляет хостер.
Я же погорел на не правильных запросах

Собственно, какие еще есть вариаты. Я с удовольствием бы выслушал любой конструктивный вариант, даже если он кажется плохим.

А вот тут я привел пример файла access.log, причем такие вещи сегодня. ноя сейчас не вылетаю
http://www.softtime.ru/forum/pstadd.php?id_forum=2&id_theme=89151&id_post=531642

  Ответить  
 
 автор: psychomc   (15.03.2013 в 12:40)   письмо автору
 
   для: добряк   (15.03.2013 в 12:24)
 

по вашему access.log для меня очевидно, что нужно блочить мудаков по ip через .htaccess. по крайней мере я бы начал с этого

  Ответить  
 
 автор: добряк   (15.03.2013 в 14:37)   письмо автору
 
   для: psychomc   (15.03.2013 в 12:40)
 

Сами роботы, Гугл дают кривые запросы. Я понимаю для того, что-бы проверить сайт на противоударность. Я же не могу Гугл .htaccess, так он для меня основной поставщик посетителей.

  Ответить  
 
 автор: psychomc   (15.03.2013 в 14:53)   письмо автору
 
   для: добряк   (15.03.2013 в 14:37)
 

значит копать нужно в другую сторону. гугл не может индексировать страницы на вашем сайте, на которые нету ссылок со страниц вашего сайта, либо других сайтов.

  Ответить  
 
 автор: добряк   (15.03.2013 в 15:04)   письмо автору
 
   для: psychomc   (15.03.2013 в 14:53)
 

Не знаю такой истины. У меня от него, Гугла, очень много грязи и чепухи.
Я предполагаю что он тестирует таким способом.
У гугла есть требования к URL, у него прописано, вот он наверное и проверяет сайт, тестирует

Но самые грязные и коварные оказались мелкософт, бинго.
Все языки перебирают, 20-40 роботов одновременно в секунду на разных языках запросы делают.
Причем, через минут 20-30 их меняют другие такие же но с другими IP.

Вообщем поведение у них схожее, только бинго не сканирует получается а атакует.
Сейчас их нет, но пойдет 2-3 недели появятся сновыми IP новые боты и если не успеешь например в .htaccess, то завалят либо хостер меня отключал из-за перегрузки сервера

Вот еще новенький для меня появился, сыпет одну чепуху
http://www.majestic12.co.uk/bot.php.
Банить или как то то там иначе надоест, поэтому я добавил простоотсев дурацких запросов

  Ответить  
 
 автор: psychomc   (15.03.2013 в 15:32)   письмо автору
 
   для: добряк   (15.03.2013 в 15:04)
 

думаю, вы ошибаетесь, проблема скорее всего где-то в вашем сайте http://otvety.google.ru/otvety/b-thread?force=1&tid=735405626f008d5a

  Ответить  
 
 автор: добряк   (15.03.2013 в 16:20)   письмо автору
 
   для: psychomc   (15.03.2013 в 15:32)
 

Ошибаюсь в чем. Во всем? Такое невозможно.
Я так не понимаю о чем.

Я о документации Гугла, что URL должен удовлетворять требованиям.
Одно из них, если у вас ЧПУ и оно случайно испортилось у пользователя, то все равно пользователь должен попасть на страницу .

Другие требования ошибки HTTP.
Если мой сайт работает нейстойчиво, то ранг будет ниже.

Иначе, ответьте на вопрос.
Зачем Гугл постоянно гуляет по пройденным страницам?
Вы ответьте на вопрос.


Мой ответ, проверяет усточивость сайта и стабильность выдачи результатов.

  Ответить  
 
 автор: psychomc   (15.03.2013 в 16:31)   письмо автору
 
   для: добряк   (15.03.2013 в 16:20)
 

то зачем он гуляет по пройденным вас особо волновать не должно. дело в том, что он не гуляет по страницам, ссылок на которые нет на вашем сайте либо на других сайтах. почему у вас он это делает, в этом и надо разобраться. подозреваю, что проблема не в гугле

  Ответить  
 
 автор: добряк   (15.03.2013 в 16:43)   письмо автору
 
   для: psychomc   (15.03.2013 в 16:31)
 

У вас наверное статические страницы? И на сайте ничего не меняется?
У меня динамические.
Пользователи редактируют, удаляют, говно втыкают - и вы предлагаете что бы гугл все это все показывал и такие сайты были на первых местах.

Я потерял интерес. Вы не методологию обсуждаете а копаете под человека или под сайт.

Привожу последний пример, что я и сделал.


http://www.opennet.ru/base/dev/mysql_search.txt.html
From: Дмитрий Лебедев, Олег Юсов

 Первым делом надо порезать ручками строку.

   $search = substr($search, 0, 64);
   64 символов пользователю будет достаточно для поиска. Теперь каленым
   железом выжжем все "ненормальные" символы.

           $search = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $search);



Я обсуждаю вопрос который тут ясно постовлен как первое дело и что надо железом выжигать
Извините, ваши подозрения в мой адрес, я обсуждать не буду

  Ответить  
 
 автор: psychomc   (15.03.2013 в 16:49)   письмо автору
 
   для: добряк   (15.03.2013 в 16:43)
 

удачи

  Ответить  
 
 автор: добряк   (15.03.2013 в 17:06)   письмо автору
 
   для: psychomc   (15.03.2013 в 16:49)
 

PHP5 практика создания web-сайтов_КузнецовМаксим - 2008. стр 328

Проверка корректности чисел является важной задачей.
Разработчики наивно полагают, что....
Однако вместо чисел, может быть введен текст и даже целые минипрограммы деструктивного действия, приводящие в лучшем случае к сбою работы , а вхудшем - к взлому.


Вот это и есть моя текущая проблема.
psychomc Ваши пояснения имеют важное, даже чрезвычайно важное значение, но у меня другая сейчас проблема

Ну извините, не в тему получается, а за помощь и желание помочь большое вам спасибо

  Ответить  
 
 автор: psychomc   (17.03.2013 в 02:16)   письмо автору
 
   для: добряк   (15.03.2013 в 17:06)
 

всё верно. решение - приведение типа к целому числу с помощью (int) или intval до использования в запросе. что делать с теми, кто отправляет неправильные запросы, это уже другой вопрос. и я считаю решать его нужно не с помощью php

  Ответить  
 
 автор: добряк   (12.03.2013 в 01:22)   письмо автору
 
   для: btr   (12.03.2013 в 00:57)
 

Кстати странную вещь заметил.
Под ip гугла, зашел человек. Я давно записываю геометрию перемещения. У людей психология другая. Удивился. Вроде IP ГУГЛА. раз пять перепроверил, то человек, то робот. Вообщем киборг какой то.

  Ответить  
 
 автор: добряк   (15.03.2013 в 00:44)   письмо автору
 
   для: psychomc   (11.03.2013 в 23:40)
 

http://www.softtime.ru/forum/read.php?id_forum=5&id_theme=30333

  Ответить  
Rambler's Top100
вверх

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