PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (30): В начало « ... 22 23 24 25 26 27 28 [29] 30 »

> Найдено сообщений: 446
GoDr Отправлено: 16 Января, 2015 - 12:58:23 • Тема: Простой код что бы умножить два числа • Форум: Напишите за меня, пожалуйста

Ответов: 20
Просмотров: 140
LIME пишет:
и кстати лучше использовать не статические методы а нормально создавать объекты
Ну это вопрос спорный.. Я воспринимаю этот функционал ни как ООП, а скорее как процедурный, то есть чистой воды как библиотеку с маленьким набором функций.. А хотя вообще всё зависит от самого проекта Хорошо
(Добавление)
LIME Радость ... пятница.... да и вообще после затяжных праздников мозги нужно разгонять...
GoDr Отправлено: 16 Января, 2015 - 12:26:19 • Тема: Простой код что бы умножить два числа • Форум: Напишите за меня, пожалуйста

Ответов: 20
Просмотров: 140
LIME пишет:
ты сначала предложил по всем шаблонам умножать на константу
Никоем образом!!! Скорее всего мы друг друга не поняли.. Однозначно в одном месте и конечно же всё это в отдельную функцию (метод): по типу отправил идентификатор товара и валюту, получил цену..

А вообще человек спросил как умножить два числа Радость а ему тут уже плагины к магазину написали ....

LIME пишет:
нет))
PS: глянь SOLID 1ый и 2ой принципы и шаблон DI
Малость не понял.. Если я в России, то соответственно цены у меня в рублях (хотя с кризисом могут быть в чём угодно)
Что бы мне перевести цену в другую валюту что мне нужно сделать? Пересчитать по курсу.. Т.е. 1 доллар = 65 рублей.. Так зачем же мне цену в рублях умножать?
Ну или я что-то сегодня совсем.. в пятнице Ха-ха
GoDr Отправлено: 16 Января, 2015 - 12:10:20 • Тема: Проверить ссылку • Форум: Вопросы новичков

Ответов: 14
Просмотров: 467
ошибочка закралась в первом тесте.. поправил

Так что если я правильно протестировал, то с увеличением ссылок первый код тормозит.. И на размер исходного текста это не сильно влияет
GoDr Отправлено: 16 Января, 2015 - 11:55:56 • Тема: Проверить ссылку • Форум: Вопросы новичков

Ответов: 14
Просмотров: 467
Провёл маленький тест..

Сделал файл примерно 100000 срок (5,7Мб) с ссылками и мусором. Результат помещается в массив. Тесты проводил по несколько раз, брал минимальное и максимальное значение

код 1:
PHP:
скопировать код в буфер обмена
  1. $iscomiy_text = file_get_contents('1.txt');
  2.  
  3. $sysstart = microtime(true);
  4. $url = '\Q' . implode('\E|\Q', $url_text) . '\E';
  5. preg_match_all("#(" . $url . ")#is", $iscomiy_text, $tmp);
  6.  
  7. print(round((microtime(true) - $sysstart), 5));

код 2:
PHP:
скопировать код в буфер обмена
  1. $sysstart = microtime(true);
  2.  
  3. preg_match_all("#(http://.*?)(\s|\'|\")#is", $iscomiy_text, $tmp);
  4. $str = implode(' ', $tmp[1]);
  5. foreach ($url_text as $value) {
  6.     if(substr_count($str, $value)){
  7.         $a[] = $value;
  8.     }
  9. }
  10.  
  11. print(round((microtime(true) - $sysstart), 5));


Тест 1: $url_text содержит 4 ссылки
код 1: 0.046 - 0.054
код 2: 0.12101 - 0.13501

Тест 2: $url_text содержит 100 ссылок
код 1: 0.20601 - 0.22401
код 2: 0.20401 - 0.23001

Тест 2: $url_text содержит 1000 ссылок
код 1: 1.62609 - 1.6681
код 2: 0.96706 - 0.95905
GoDr Отправлено: 16 Января, 2015 - 11:36:57 • Тема: Проверить ссылку • Форум: Вопросы новичков

Ответов: 14
Просмотров: 467
LIME, ты имеешь в виду что-то такое?
PHP:
скопировать код в буфер обмена
  1. $url = '\Q' . implode('\E|\Q', $url_text) . '\E';
  2. preg_match_all("#(" . $url . ")#is", $iscomiy_text, $tmp);

(Добавление)
LIME пишет:
Допуски для ссылки неправильные
да я не заморачивался, взял исключительно из условия задачи
GoDr Отправлено: 16 Января, 2015 - 11:24:47 • Тема: Проверить ссылку • Форум: Вопросы новичков

Ответов: 14
Просмотров: 467
LIME пишет:
Не надо ничего вытаскивать
Это еще накладнее получится
ну не скажи.. Именно регуляркой вытащить только ссылки и уже в этом маленьком тексте искать что нужно. Регулярка пройдёт только один раз огромный текст, а дальше будет легко и быстро..

LIME пишет:
Можно регуляркой через | поискать если охота
Боюсь что если ссылок будет очень много всё подвиснет... хотя нужно провести тест...

Если допустить следующие правила
- ссылка начинается с http
- ссылка заканчивается пробельным символом или кавычками
то код можно переделать так:
PHP:
скопировать код в буфер обмена
  1. preg_match_all("#(http://.*?)(\s|\'|\")#is", $iscomiy_text, $tmp);
  2. $str = implode(' ', $tmp[1]);
  3.  
  4. foreach($url_text as $value){
  5.     echo 'Адрес: <b>' . $value . '</b>. Число вхождений: <b>' . substr_count($str, $value) . '</b><br>';
  6. }
GoDr Отправлено: 16 Января, 2015 - 08:18:20 • Тема: Простой код что бы умножить два числа • Форум: Напишите за меня, пожалуйста

Ответов: 20
Просмотров: 140
так о чём может идти речь если не известно что за движок и как устроена система в целом Улыбка Тут буквально пару постов выше выяснилось что это вордпресс ))))

Цитата:
И лоадер курса лучше сделать отдельным классом чтоб твой был открыт к изменению
Как же сказал, что на скорую руку Радость Конечно отдельным классом, ведь сервер может быть недоступен, а сайту работать то нужно... Я просто намекнул что можно вообще не заморачиваться с "ручным" изменением данных...

Цитата:
так дело не в виде ф-ции а в том чтобы локализовать действие в одном месте
А по этому нужно знать с каким скриптом работаем Хорошо Кстати, нужно делить, а то если 10руб * 65.5 = 655 баксов Ха-ха Хотя с курсами нужно более подробно думать.. например, ены сотнями продают..
GoDr Отправлено: 16 Января, 2015 - 08:09:55 • Тема: Валидация ссылок • Форум: Вопросы новичков

Ответов: 11
Просмотров: 427
В любом случае, если не делать так
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `password` FROM `table` WHERE `id_user` = $_GET['id_user'];

то подобный вопрос в большинстве случаев не актуальный... Закатив глазки

Не знаю как кто, но я всё таки проверяю что получаю от клиента и преобразовываю всё в нужный мне формат. В дополнение можно ссылку можно преобразовать в ЧПУ. Тогда вообще ничего не должно пройти.

Что касается xss и фишинга, то тут больше вопросов к самому движку. Способов защиты и не перечесть... Например, я люблю единый вход в систему, вызов всего остального напрямую просто напросто блокируется, в том числе JS-скриптовые запросы
GoDr Отправлено: 16 Января, 2015 - 06:36:25 • Тема: Валидация ссылок • Форум: Вопросы новичков

Ответов: 11
Просмотров: 427
я так понял Eblinkoff имеет в виду встраивание в адрес всяких эксплоитов...

Кстати, можно сделать чистку ещё на уровне .htaccess что-то типа
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine On
  2.  
  3. RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
  4. RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
  5. RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
  6. RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
  7. RewriteRule ^(.*)$ index.php [F,L]
GoDr Отправлено: 15 Января, 2015 - 20:11:59 • Тема: Валидация ссылок • Форум: Вопросы новичков

Ответов: 11
Просмотров: 427
Цитата:
Проблема в том, что чтобы чистить надо знать что чистить.
Зачем? Не надо знать что чистить, нужно знать что за данные тебе нужны.

Есть вот к примеру строка
Цитата:
http://lotos-cms.ru/index.php?option=com_boss&task=show_category&catid=1&directory=1

Что тут есть?
- option : компонент который будет вызываться
- task : конкретная задача
- catid, directory : параметры для задачи

В чём суть?
Необходимо вытащить все параметры.
1. если значение option будет типа yuueisdfoejoieionoiendone, то мой проект просто не найдёт этот компонент и вернёт 404

2. достаю задачу task. То же самое, если такой задачи в моём перечне нет, то просто открываю дефолтовую страницу

3. Ну и дальше достаю параметры которые будут использоваться для запросы.

Теперь как я достаю параметры.. Для себя давно сделал маленькую функцию (метод). Выкладываю чуть обрезанный вариант, может пригодиться
PHP:
скопировать код в буфер обмена
  1. /**
  2.  * Получает значение из глобальной переменной или массива
  3.  *
  4.  * @param array       $arr        - массив с данными
  5.  * @param string      $name       - параметр
  6.  * @param string|null $def        - значение по умолчанию
  7.  * @param string|null $is         - тип переменной
  8.  *                                s  - строка
  9.  *                                i  - число
  10.  *                                n  - удалить пробельные символы в начале и конце
  11.  *                                u  - декодирует URL-кодированную строку
  12.  *                                sn - строка без пробельных символов в начале и конце
  13.  *                                st - строка без тегов
  14.  *
  15.  * @return null|string - значение из глобальной переменной
  16.  */
  17. function getParam($arr, $name, $def = null, $is = null)
  18. {
  19.     $result = null;
  20.     if (isset($arr) and isset($arr[$name])) {
  21.         $result = $arr[$name];
  22.         if ( ! is_null($is)) {
  23.             switch ($is) {
  24.             case 'st':
  25.                 $result = strip_tags(strval($result));
  26.                 break;
  27.             case 'sn':
  28.                 $result = trim(strval($result));
  29.                 break;
  30.             case 's':
  31.                 $result = strval($result);
  32.                 break;
  33.             case 'i':
  34.                 $result = intval($result);
  35.                 break;
  36.             case 'n':
  37.                 $result = trim($result);
  38.                 break;
  39.             case 'u':
  40.                 $result = urldecode($result);
  41.                 break;
  42.             }
  43.         }
  44.  
  45.         return $result;
  46.     } else {
  47.         return $def;
  48.     }
  49. }

Вызывается очень легко.

PHP:
скопировать код в буфер обмена
  1. $option    = getParam($_GET, 'option', 'com_boss', 'st');
  2. $task      = getParam($_GET, 'task', 'show_category', 'st');
  3. $catid     = getParam($_GET, 'catid', 1, 'i');
  4. $directory = getParam($_GET, 'directory', 1, 'i');
  5.  

Что касается подготовленных выражений, то я написал для своих проектов обёртку для MySqli.
Вот ссылка на разработку https://code[dot]google[dot]com/p/gddatabase/
Сам класс очень подробно документирован, так же есть файл с подробными примерами. Интегрируется в любой проект легко

Так что что такое "небезопасные ссылки" я уже давно не знаю... Хорошо

PS
Цитата:
На счёт подготовленных выражений неплохо, их использования достаточно?
Суть подготовленных выражений - это запрос отправляется отдельно, данные отдельно. И они по сути не пересекутся. Так что безопасность на все 100
GoDr Отправлено: 15 Января, 2015 - 19:35:35 • Тема: Проверить ссылку • Форум: Вопросы новичков

Ответов: 14
Просмотров: 467
rafaello9, это не самый лучший вариант... Нужно оптимизировать.. представь если ссылок много и текст большой..

Можно подумать, чтобы вытащить все ссылки из текста и уже потом этот маленький текст гонять...
GoDr Отправлено: 15 Января, 2015 - 14:49:36 • Тема: удалить подстроки • Форум: Регулярные выражения

Ответов: 5
Просмотров: 446
Согласен! Пользовался информацией из Вики... а там слеш включён в метасимволы. Сейчас глянул http://php.net/manual/en/regexp.reference.meta.php, а там его нет Не понял
GoDr Отправлено: 15 Января, 2015 - 14:35:10 • Тема: Проверить ссылку • Форум: Вопросы новичков

Ответов: 14
Просмотров: 467
решение в лоб Радость

PHP:
скопировать код в буфер обмена
  1. $url_text = array(
  2.     'http://jghty.com',
  3.     'http://kgjtu.net',
  4.     'http://kfjfyt.org',
  5.     'http://nvhgy.jfhty.org'
  6. );
  7.  
  8. $iscomiy_text = '
  9.    Вы получили это письмо, потому что
  10.    подписались на рассылку .......
  11.    ............................
  12.    на сайте http://kgjtu.net/my-page/jfhgy.html
  13.    <head></head>
  14.    <body>
  15.    <p>Вы получили это письмо, потому что</p>
  16.    <p>подписались на рассылку .......</p>
  17.    ............................
  18.    <p>на сайте <a href="http://kgjtu.net/my-page/jfhgy.html">вот здесь</a></p>
  19.    ';
  20.  
  21. foreach($url_text as $value){
  22.     echo 'Адрес: <b>' . $value . '</b>. Число вхождений: <b>' . substr_count($iscomiy_text, $value) . '</b><br>';
  23. }

(Добавление)
результат:

Адрес: http://jghty.com. Число вхождений: 0
Адрес: http://kgjtu.net. Число вхождений: 2
Адрес: http://kfjfyt.org. Число вхождений: 0
Адрес: http://nvhgy.jfhty.org. Число вхождений: 0
GoDr Отправлено: 15 Января, 2015 - 14:28:41 • Тема: Создание переписки на сайте • Форум: Вопросы новичков

Ответов: 2
Просмотров: 193
Так поставь движок форума или что-то типа приватных сообщений Улыбка
GoDr Отправлено: 15 Января, 2015 - 14:26:03 • Тема: Валидация ссылок • Форум: Вопросы новичков

Ответов: 11
Просмотров: 427
Малость не понял проблему.. Eblinkoff, а ты не проверяешь что-ли что приходит от клиента в запросе? Не понял
Получил данные и преобразовал их в нужный формат (можно и почистить). К тому же. если результат уходит в БД, то используй подготовленные выражения. И можно просто забить на всякий "вредоносный" код в ссылке

Страниц (30): В начало « ... 22 23 24 25 26 27 28 [29] 30 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB