Прошел год с момента основания блога. Вы, дорогие читатели, можете обратить внимание, что статей тут не так уж и много. И я прошу вас о помощи: напишите мне на email dirtygreen@yandex.ru о чем бы вы хотели почитать. Если у вас нет времени на это, то просто напишите интересующую тему в комментариях к этому посту, потому что Ваше мнение действительно важно для меня.
НЗинфо
Хроники WEB разработки.
среда, 23 октября 2013 г.
О чем писать?
Прошел год с момента основания блога. Вы, дорогие читатели, можете обратить внимание, что статей тут не так уж и много. И я прошу вас о помощи: напишите мне на email dirtygreen@yandex.ru о чем бы вы хотели почитать. Если у вас нет времени на это, то просто напишите интересующую тему в комментариях к этому посту, потому что Ваше мнение действительно важно для меня.
пятница, 26 июля 2013 г.
Пометка о якорях
Когда используешь якоря в качестве элементов навигации в тексте, не забывай ставить обратные.
вторник, 28 мая 2013 г.
javascript и get запрос
Парсер GET запросов на javascript
Проблема
Иногда возникает необходимость работать с GET запросами с помощью javascript. Очень удобно это делать предварительно разобрав запрос на пары [параметр]=>'значение' и записав их в массив. Так же необходимо учитывать, что кириллические символы, отправленные через GET запросы необходимо декодировать.Решение с помощью функции parseGET()
Алгоритм работы
- Для удобства записываем GET запрос в переменную строчного типа;
- Создаем переменную типа массив, для хранения результатов работы нашей функции;
- Создаем функцию, которую назовем parseGET;
- Убираем из строки запроса символ '?';
- Создаем вспомогательный массив вида [номер элемента]=>'параметр=значение';
- В цикле перебираем все элементы массива;
- Для каждого элемента выполняем следующие действия: создаем еще один вспомогательный массив типа [0]=>'название параметра', [1]=>'значение параметра', декодируем значение параметра и заполняем массив, который мы создали в шаге 2.
Функция parseGET()
//Для удобства записываем GET запрос в переменную строчного типа var GET_query = document.location.search; //Создаем переменную типа массив, для хранения результатов работы нашей функции var GET=new Array(); //Создаем функцию, которую назовем parseGET function parseGET(){ //Убираем из строки запроса символ '?' GET_query=GET_query.substr(1); //Создаем вспомогательный массив вида [номер элемента]=>'параметр=значение' var preGET=GET_query.split('&'); //В цикле перебираем все элементы массива for(var i=0; i<preGET.length; i++){ //Для каждого элемента выполняем следующие действия: //создаем еще один вспомогательный массив типа [0]=>'название параметра', [1]=>'значение параметра' var TMP_arr=preGET[i].split('='); var key=TMP_arr[0]; //декодируем значение параметра var value=decodeURIComponent(TMP_arr[1]); //заполняем массив, который мы создали в шаге 2 GET[key]=value; } } //вызываем функцию parseGET(GET_query);
Итоги
Теперь к любому параметру отправленному на страницу с помощью GET запроса можно обратиться в javascript коде например так:alert(GET['параметр']);
понедельник, 27 мая 2013 г.
Решаем проблему кодировок
Проблема
У большинства пользователей в настройках кодировки браузера активирована опция "Выбирать автоматически". Работая над проектом вы можете забыть указать необходимую кодировку на одной из страниц и тогда пользователь вместо информации увидит набор непонятных символов.Решение
Создаем либо редактируем существующий файл .htaccess, он должен содержать такую вот запись :AddDefaultCharset <название кодировки>У меня например это выглядит так:
AddDefaultCharset UTF-8Вот и все. Теперь обращаясь к любой странице вашего сайта браузер пользователя будет автоматически выбирать в качестве кодировки по умолчанию ту, которую вы указали в файле .htaccess.
Защита от SQL injection и XSS (функция secureInnerData )
Защита от SQL injection и XSS
Приведенная в статье функция защищает от атак типа SQL injection и XSS
Описание
Эта простая в использовании функция поможет вам защитить себя
от атак типа SQL injection и XSS. Чаще всего их проводят используя GET или POST запросы которые не фильтруются на стороне сервера. Используя данную функцию в качестве фильтра входящих данных вы сможете частично обезопасить себя.
Исходный код функции secureInnerData
Алгоритм предельно простой:- удаляем пробелы из конца строки
- удаляем пробелы из начала строки
- преобразует специальные символы в HTML сущности
- возвращаем очищенные данные
//функция защищает от атак типа SQL injection и XSS function secureInnerData($data) { //удаляем пробелы из конца строки $data=rtrim($data); //удаляем пробелы из начала строки $data=ltrim($data); //преобразует специальные символы в HTML сущности $data=htmlspecialchars($data); //возвращаем очищенные данные return $data; }
Использование функции secureInnerData
Допустим нам надо отфильтровать параметр data который передается на сервер с помощью GET запроса. Выглядеть фильтрация будет так:$data=secureInnerData($_GET['data']);
О реализации
rtrim(), ltrim() удаляют из конца и начала строки соответственно:
" " (ASCII 32 (0x20)), символ пробела.
"\t" (ASCII 9 (0x09)), символ табуляции.
"\n" (ASCII 10 (0x0A)), символ перевода строки.
"\r" (ASCII 13 (0x0D)), символ возврата каретки.
"\0" (ASCII 0 (0x00)), NUL-байт.
"\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.
" " (ASCII 32 (0x20)), символ пробела.
"\t" (ASCII 9 (0x09)), символ табуляции.
"\n" (ASCII 10 (0x0A)), символ перевода строки.
"\r" (ASCII 13 (0x0D)), символ возврата каретки.
"\0" (ASCII 0 (0x00)), NUL-байт.
"\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.
htmlspecialchars() преобразует специальные символы в HTML сущности:
'&' (амперсанд) преобразуется в '&'
'"' (двойная кавычка) преобразуется в '"' when ENT_NOQUOTES is not set.
''' (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.
'<' (знак "меньше чем") преобразуется в '<'
'>' (знак "больше чем") преобразуется в '>'
'"' (двойная кавычка) преобразуется в '"' when ENT_NOQUOTES is not set.
''' (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.
'<' (знак "меньше чем") преобразуется в '<'
'>' (знак "больше чем") преобразуется в '>'
вторник, 9 апреля 2013 г.
php кавычки
Желая вывести какой-то текст в php мы используем кавычки. Кто-то двойные, кто-то одинарные. Так а в чем разница? Все очень просто: двойные кавычки говорят интерпретатору php, что где-то в тексте могут быть переменные. Если же текстовый блок заключен в одинарные кавычки, то имена переменных будут выведены как обычный текст.
Пример двойных кавычек:
выведет на экран:
значение переменной 1
Пример одинарных кавычек:
выведет на экран:
значение переменной $param
P.S. Считается хорошим тоном не использовать без необходимости двойные кавычки, якобы это сэкономит серверу память при интерпретации вашего кода. Машине не надо будет лишний раз думать где тут переменная, а где текст. На практике же не думаю, что это действительно важно.
Пример двойных кавычек:
$param=true; echo "значение переменной $param";
выведет на экран:
значение переменной 1
Пример одинарных кавычек:
$param=true; echo 'значение переменной $param';
выведет на экран:
значение переменной $param
P.S. Считается хорошим тоном не использовать без необходимости двойные кавычки, якобы это сэкономит серверу память при интерпретации вашего кода. Машине не надо будет лишний раз думать где тут переменная, а где текст. На практике же не думаю, что это действительно важно.
понедельник, 8 апреля 2013 г.
Создание таблицы
Создание таблицы на PHP как оказалось дело не сложное. Если разбить работу на этапы, то выглядеть они будут так:
1. Создаем шапку таблицы
2. В цикле создаем тело таблицы
3. Выводим результат на экран
Ниже собственно функция создающая таблицу
1. Создаем шапку таблицы
2. В цикле создаем тело таблицы
3. Выводим результат на экран
Ниже собственно функция создающая таблицу
//функция создающая таблицу function drawTable(){ //count определяет количество строк в таблице $count=10; //здесь мы создаем шапку таблицы $html=" <table border='1px'> <tr> <td>столбец 1. Название</td> <td>столбец 2. Название</td> <td>столбец 3. Название</td> </tr> "; //тут мы в цикле создаем тело таблицы for ($i=0; $i<$count; $i++){ $html.="<tr> <td>столбец 1. Значение {$i}</td> <td>столбец 2. Значение {$i}</td> <td>столбец 3. Значение {$i}</td> </tr> "; } //тут мы заканчиваем таблицу $html.="</table>"; //выводим таблицу на экран echo $html; }
Подписаться на:
Сообщения (Atom)