Web-мастеру и не только
Полезные решения для Web-мастеров
Web-мастеру и не только - RSS-канал
Web-мастеру и не только - Карта сайта
Градиентный фон на PHP
31.07.2019 | Категория: Web-мастеру и не только | Автор: ManHunter
Градиентный фон на PHP
Продолжаем работать с графикой на PHP. Сегодня будем рисовать градиентную заливку фона, когда один цвет плавно перетекает в другой.
Читать статью целиком »
Просмотров: 1892 | Комментариев: 1
Получение всех функций JavaScript на странице
21.07.2019 | Категория: Web-мастеру и не только | Автор: ManHunter
Иногда в процессе разработки появляются странные задачи. Вот и на этот раз возникла необходимость узнать все пользовательские функции JavaScript, которые задействованы на странице. Немного колдунства и получился вот такой код:Code (JavaScript) : Убрать нумерацию
- (function() {
- var source;
- for (var method in window) {
- if (typeof window[method]=="function" && window.hasOwnProperty(method)) {
- // Текст функции
- source=Function.prototype.toString.call(eval(method));
- // Пропускаем нативные функции
- if ((/\{\s*\[native code\]\s*\}/).test(source)) { continue; }
- // Вывести название и текст функции
- document.write('<pre>');
- document.write('<div><b>'+method+'</b>:</div>');
- document.write(source);
- document.write('</pre>');
- }
- }
- }());
Просмотров: 1231 | Комментариев: 0
Разделенные ссылки
02.07.2019 | Категория: Web-мастеру и не только | Автор: ManHunter
Разделенные ссылки - очень интересный визуальный эффект для оформления вашего сайта. Суть разделенных ссылок заключается в том, что одна ссылка имеет одновременно несколько активных областей, которые могут находиться вообще в разных местах страницы. Например:Разделенные ссылки
При наведении курсора на название альбома также подсвечивается его обложка в левом блоке, а при наведении на любую из обложек будет подсвечено название соответствующего альбома. Никаких скриптов для этого не требуется, все реализуется средствами CSS.
Читать статью целиком »
Просмотров: 1375 | Комментариев: 1
Как узнать размер базы MySQL
18.06.2019 | Категория: Web-мастеру и не только | Автор: ManHunter
Как узнать размер базы MySQL
Иногда бывает нужным прикинуть размер базы MySQL, который занимает ваш проект. Например, чтобы не вылезти за ограничения хостинга или вовремя обнаружить аномальное разрастание базы в случае программной ошибки, да или просто для спортивного интереса.
Читать статью целиком »
Просмотров: 1460 | Комментариев: 0
Получение реального формата изображения
08.04.2019 | Категория: Web-мастеру и не только | Автор: ManHunter
Одно из основных правил при разработке web-приложений - не доверять никаким данным, полученным от пользователя. Они могут быть перепутаны случайно, но могут быть специально модифицированы в злонамеренных целях. Это касается в том числе и загружаемых изображений. Чтобы применять к ним функции типа ImageCreateFromXXX, просто ориентироваться на расширение файла недостаточно, оно запросто может не соответствовать содержимому. Для определения реального типа изображения я всегда проверяю внутренний формат файла, его служебные заголовки, и только на основании этого принимаю решение, как обрабатывать этот файл. Для этого у меня написана вот такая функция:Code (PHP) : Убрать нумерацию
- //-------------------------------------------------------------------
- // Функция получения реального формата изображения
- // (C) ManHunter / PCL
- // https://www.manhunter.ru
- //-------------------------------------------------------------------
- function get_real_image_type($file_path) {
- // По умолчанию файл имеет неизвестный формат
- $type=false;
- // Анализ по внутренней структуре файла
- if ($f=fopen($file_path,'r')) {
- $data=fread($f,20);
- fclose($f);
- // Заголовок файла GIF
- if (substr($data,0,3)=='GIF'
- && (substr($data,12,1)=="\x00"
- || substr($data,12,1)=="\x01")) {
- // Проверка на классические сплойты
- if (strpos(substr($data,6,4),'/*')!==false
- || strpos(substr($data,6,4),'//')!==false) {
- $type=false;
- }
- else {
- // Проверка на более хитрые сплойты
- $tmp=preg_replace('/[^\("\']/','',substr($data,6,4));
- if ($tmp=='("' || $tmp=='(\'') {
- $type=false;
- }
- else {
- $type='gif';
- }
- }
- }
- // Заголовок файла PNG
- elseif (substr($data,0,8)==chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) {
- $type='png';
- }
- // Заголовок файла JPEG
- elseif (substr($data,0,3)==chr(255).chr(216).chr(255)) {
- $type='jpg';
- }
- // Заголовок файла BMP
- elseif (substr($data,0,2)=='BM') {
- $type='bmp';
- }
- // Заголовок файла WebP
- elseif (substr($data,0,4)=='RIFF' && substr($data,8,4)=='WEBP') {
- $type='webp';
- }
- }
- return $type;
- }
Кроме определения типа изображения функция также проверяет GIF-файлы на наличие в них вредоносного кода. Из всех эксплойтов, которые я встречал внедренными в гифки, не прошел ни один. Если вдруг найдете образец зловреда, который не обнаруживается этой функцией, то пришлите его мне, пожалуйста, я с удовольствием доработаю проверку.
Просмотров: 1257 | Комментариев: 6