Когда используешь якоря в качестве элементов навигации в тексте, не забывай ставить обратные.
пятница, 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;
}
понедельник, 3 октября 2011 г.
Цели. Задачи.
Я создаю этот блог, как хронологию будней WEB разработчика. Планирую ежедневно писать о том, с чем придется столкнуться работая над теми или иными проектами. Часто бывает так, что ищешь решение проблемы, которую уже решил однажды, так вот чтобы избежать этих нелепых ситуаций я буду тщательно записывать все нетипичные ситуации. А так как разработчик я начинающий - ситуаций требующих записи будет много.
Подписаться на:
Сообщения (Atom)