Amazing but you can upload and enable your own PHP extensions on otherwise very limited 1und1 hosting. This way you can even upload Zend encoded scripts (binary PHP) and they will work. This is how.
Monday, April 30, 2012
Saturday, March 31, 2012
Руководство по SEO для начинающих и не очень. Практические шаги.
Я было занялся раскруткой сайта для одной хорошо знакомой семьи (они проводят прихологические семинары и тренинги), и здраво рассудив, что изобретать велосипед не стоит, решил найти какое-нибудь руководство по раскрутке, где было бы по пунктам расписано, что нужно в каком порядке делать. И, что-бы вы думали? Ничего не нашел. Да, конечно, есть куча сайтов на тему раскрутки и SEO, и все они, как ни странно, сразу находятся на первой странице в результатах поиска, но многие - просто отчёты с разных конференций (слишком абстрактно, только для специалистов), другие - подробное описание раскрутки одного или двух сайтов (даже с указанием заработка в месяц) - слишком специализировано. А один сайт показался очень даже подходящим, только все материалы на нем платные. Нет - это не наш путь.
Я сам занимаюсь разработкой информационных систем, а не раскруткой. И у меня стабильная работа, но у меня есть пара личных проектов, типа системы учёта времени или системы записи на приём. То есть меня можно назвать начинающим SEO-шником. Но даже такой минимальный опыт позволяет набросать список того, что нужно делать для продвижения вашего сайта. Это первый шаг - дальше можно читать другие сайты и вникать в эту область деятельности по самое "не хочу".
Что ж - начнём. Сразу хочу предупредить тех лохов наивных граждан, которые думают зарабатывать деньги на рекламе висящей на их сайте. Возможность этого рекламируется где не попадя и кажется, что каждый студент может сделать сайт с другом и иметь по 100$ каждый месяц на текущие расходы. Фигня! Мы это проходили и опыт самый печальный. Дело не в том что вас обманывают, нет - всё правда. Я даже добился своего первого чека от Google Adsense на 80 Евро, но сайт нужно очень сильно разкрутить что-бы поток посетителей превысил расходы на разработку и содержание сайта. Как можно раскрутить сайт быстро? Заплатить за рекламу в том же Google AdWords. И вот вы попали в безконечный круг - нужно заплатить что-бы получить денег. Думаю, у некоторых сайтов есть небольшой шанс, но это не легкие деньги.
Итак, раскручивать будем сайт с которого деньги поступают от клиентов а не посетителей. Посетители просто читают сайт, клиенты - платят деньги за услуги предоставляемые на сайте (онлайн или офлайн).
Вкратце раскрутка состоих из таких шагов:
- Проверить текущее состояние сайта, количество посетителей и другую информацию. Это необходимо для того, чтобы потом оценить, насколько успешными будут ваши усилия по раскрутке.
- Исправить внутреннюю структуру сайта, HTML, оптимизировать теги, сделать сайт приятным для поисковых систем.
- Наращивать колличество и качество ссылок на ваш сайт с других популярных сайтов.
- Исправить и улучшить текстовое наполнение сайта, его контент подбить под конкретные поисковые запросы.
- Купить рекламу. Да-да, заплатить сначала самому, что-бы найти клиентов (не посетителей), которые вернут вам потраченные деньги.
Шаг №1. Определим где мы находимся (не GPS).
Вот наш подобытный сайт: http://aistm.de/. Дальше пойдут контретные шаги, каждый из которых приблизит вас к вашей мечте.
- Заходим на Google Analytics, регистрируемся и вставляем код для учёта посещений себе на сайт. (Я не даю подробных описаний как это сделать, но если на этом этапе у вас возникли проблемы, то лучше дальше не читать и заняться чем-то другим, например, укладывать рельсы или играть на скрипке). Analytics обновляет информацию только раз в день. Зато даёт много достаточно подробной информации о сайте, посетителях и источниках трафика. Это не такая профессиональная система, как например, Omniture, зато наиболее популярная и бесплатная.
- Заходим на Woopra или GoSquared, регистрируемся и вставляем код на сайт. Тут мы получаем статистику в реальном времени. Это не только красиво и занимательно но и помогает иногда живее реагировать на резкие скачки трафика.
- Заходим на SeoQuake и инсталлируем этот тулбар. Да-да, я тоже ненавижу тулбары, но этот пригодится. Открываем наш сайт и смотрим инфо.
Что мы тут видим? Маленький ликбез по SEO.
- Название страницы и мета теги очень выжны. Казалось-бы вы и так знаете что там написано, но перепроверить не мешает. Кроме названия сайта желательно добавить его краткое описание, т.к. его будет видно в результатах поиска.
- PR - Page Rank. Каждой странице в индексе Google соответствует цифра от 0 до 10. Число вещевственное, с кучей цифр после запятых (надо же как-то сравнивать миллиарды страниц). Это число определяет престиж данной страницы, и как и сам престиж - определение это размытое и приблизительное. Нам нужно будет стараться поднять это число от нуля максимально вверх. Зависит это число от многих факторов но основным является качество и колличество (в таком порядке) сайтов ссылающихся на ваш. А поднимать это число нужно чтобы ваш сайт выдавался выше (раньше) в результатах поиска (по определенному запросу, в разных запросах будет разное позиционирование вашего сайта). В Яндексе этому соответстует ТИЦ (тематический индекс цитирования). Вот подробно о взаимосвязи важности с колличеством: http://www.inwind.ru/publication_seo_pagerang/
- Cached: дата последнего индексирования. А вы думали Google сразу знает о том что у вас новый контент появился? Нет, пройдёт какое-то время прежде чем вас переиндексируют. Но на это время можно влиять с помощью карты сайта.
- Остальная информация это, в основном, колличество индексированных страниц или ссылок на ваш сайт с других сайтов. Подробности тут: http://www.seoquake.com/pages/guide.php#l_parameters
4. Заходим на SEOCentro и вводим самый естественный запрос который соответствует тематике вашего сайта и адрес сайта. Мы увидим, на каком месте в результатах поиска попадется ваш сайт. Результат запомним (сохраним страницу как HTML) - после раскрутки будет с чем сравнивать. Эту операцию можно провести и вручную, но хорошо если поиск вашего сайта по страницам не займет пол-часа :-)
Теперь мы имеем представление где мы находимся и насколько (не) популярен наш сайт на данный момент. По ходу раскрутки мы будем проверять и сравнивать эти параметры. Именно так мы будем предупреждены о том что завтра у нас не будет отбоя от клиентов и деньги потекут рекой.
Продолжение: Оптимизация самого сайта.
Продолжение: Оптимизация самого сайта.
Руководство по SEO для начинающих и не очень. Практические шаги. Шаг №2. Оптимизация самого сайта.
Это продолжение статьи - начало тут: Руководство по SEO для начинающих и не очень. Практические шаги.
Это технический раздел. Тут мы сделаем так, чтобы поисковые системы проиндексировав наш сайт увидели, что он написан грамотно и повысили его в результатах запроса.
Заходим на подопытный сайт и в SEOQuake жмем Diagnostics. В результате получаем отчёт в котором будет прописано что на сайте сделано не самым оптимальным образом. Жмём [Show advice] что-бы посмотреть подробнее что не так и советы по улучшению ситуации.

Это технический раздел. Тут мы сделаем так, чтобы поисковые системы проиндексировав наш сайт увидели, что он написан грамотно и повысили его в результатах запроса.
Заходим на подопытный сайт и в SEOQuake жмем Diagnostics. В результате получаем отчёт в котором будет прописано что на сайте сделано не самым оптимальным образом. Жмём [Show advice] что-бы посмотреть подробнее что не так и советы по улучшению ситуации.

Обратите внимание на название сайта (Title). Это текст который будет виден в результатах поиска. Есть смысл кроме названия сайта добавить туда краткое описание так, что-бы пользователи с одного взгляда понимали, что им остро необходимо зайти именно на ваш сайт. А название сайта можно поставить даже в конце.
Под названием сайта стоит его описание, которое берется из Meta description. Так поставьте туда подходящий текст! Meta description - это не абстрактное описание которое никому не нужно, а средство для прямого доступа к описанию вашего сайта в результатах поиска.
На сайте нужно использовать H1, H2 теги на каждой странице. Поисковые системы придают словам в заголовке больший приоритет. Если по этим словам будут искать то ваша страница будет выше в результатах с ключевыми словами в этих тегах чем если бы эти-же слова стояли без H1, H2 тегов.
Обратите также внимание на вашу главную страницу. На ней должен быть текст. Если на ней нет никакого текста а только флеш заставка, например, то пользователю придётся искать, изучать и выбирать следующий пункт меню и поисковая система не будет находить никакого текста и соответственно не выдавать ваш сайт в результатах.
Используйте mod_rewrite или другой аналогичный способ сделать ссылки на вашем сайте "говорящими". Слова в URL имеют высокий вес. Сравните: http://www.alistapart.com/articles/succeed/ и http://www.rechnung-plus.de/?id=38.
Text To HTML ratio сам по себе не очень важен, но он позволяет выявить страницы у которых слишком мало текста или наоборот.
Text To HTML ratio сам по себе не очень важен, но он позволяет выявить страницы у которых слишком мало текста или наоборот.
Если к картинкам добавить их описание включающее ключевые слова, то наш сайт найдут даже если будут искать картинки.
С помощью robots.txt можно запретить поисковым системам индексировать некоторые страницы или даже разделы сайта. Обычно это не нужно, разве что у вас на сайте есть секретная информация в открытом доступе.
Скорость загрузки страниц с сервера тоже имеет значение. Включите gzip кодирование и проверьте как долго загружаются страницы.
Все эти данные относились к одной странице а не ко всему сайту. Повторите диагностику для других страниц пока у вас не появится уверенность что все страницы оптимизированны должным образом.
Потом заходим в Google Webmaster Central и проверяем что наш сайт проиндексировался без ошибок. Ошибки исправляем и запрашиваем повторную индексацию. Да-да, вы можете влиять на то, как часто ваш сайт будет индексироваться. Создайте файл Sitemap и обновляйте его (лучше автоматически) при изменениях на сайте. В Google Webmaster Central также есть минимальная статистика по разным параметрам, но она не очень интересна - ведь у нас же уже есть Analytics.
Заходим на http://www.addthis.com/, регистрируемся и вносим сгенерированный код на сайт. Таким образом мы дадим тем пользователям, которым понравился наш сайт, простую возможнось поделиться ссылкой с друзьями.
Следующий шаг: Наработка ссылок.
Заходим на http://www.addthis.com/, регистрируемся и вносим сгенерированный код на сайт. Таким образом мы дадим тем пользователям, которым понравился наш сайт, простую возможнось поделиться ссылкой с друзьями.
Следующий шаг: Наработка ссылок.
Руководство по SEO для начинающих и не очень. Практические шаги. Шаг №3. Наработка ссылок
Это продолжение статьи - начало тут: Руководство по SEO для начинающих и не очень. Практические шаги.
Думаю, все уже знают что сайты на которые ссылаются другие респектабельные сайты поднимаются выше в результатах поиска. Раньше для этого советовали контактировать с web-мастерами других сайтов на подобную тематику и обмениватся с ними ссылками. Это слишком трудоёмкий способ - забудьте его. Также как и покупку ссылок в специальных ссылочных мусорках (это запрещённый черный SEO).
Нам нужно найти сайты где можно самому про себя написать и поставить ссылку. Первыми в голову приходят форумы, гостевые книги и подобные сайты. Да, с этого можно начать и получить первых 100-1000 посетителей, но регистрироватся на десятках форумов конкретно достаёт. И не создавайте новый топик с рекламой вашего сайта - это спам, найдите топик где люди обсуждают тему вашего сайта и коструктивно выскажите своё мнение или компетентно ответьте на вопрос, не забыв указать ваш сайт в подписи.
Добавте ссылку на сайт в подписи ко всем вашим письмам - об этом часто забывают.
Создайте на сайте блог и пару раз в неделю пишитени о чём о новостях, изменениях и улучшениях в вашей отрасли. Пишите сами - содранные тексты легко выявляются поисковыми системами и понизят вас в рейтинге.
Дублируйте статьи в блоге на Facebook, Twitter и других подобных сайтах. Не всегда нужно ожидать вирусного эффекта, но пару новых посетителей вы получите.
Если есть немного креативности - создайте прикольное видео, закачайте на YouTube и пропишите ваш сайт в описании. Продублируйте видео на Vimeo и др.
Напишите интересную статью на любую тему и отправте на тематический сайт или даже офлайн журнал. (Да-да, вот оказывается зачем я всё это описываю :-) Продублируйте на сайтах с новостями обо всём на свете, например http://nnm.ru/.
Если вы продаёте товар, то поставте объявления на http://www.ebay.ru/ и аналогичных сайтах. Если даже вы продадите товар за цену ниже себестоимости зато получите ссылки с сайтов с хорошим PR.
В общем - будьте активны и сделайте чтобы вас заметили, если (пока-что) не в результатах поиска так хоть на Facebook или хотя бы http://failblog.org/ ;-).
Шаг №4. Ключевые слова.
Думаю, все уже знают что сайты на которые ссылаются другие респектабельные сайты поднимаются выше в результатах поиска. Раньше для этого советовали контактировать с web-мастерами других сайтов на подобную тематику и обмениватся с ними ссылками. Это слишком трудоёмкий способ - забудьте его. Также как и покупку ссылок в специальных ссылочных мусорках (это запрещённый черный SEO).
Нам нужно найти сайты где можно самому про себя написать и поставить ссылку. Первыми в голову приходят форумы, гостевые книги и подобные сайты. Да, с этого можно начать и получить первых 100-1000 посетителей, но регистрироватся на десятках форумов конкретно достаёт. И не создавайте новый топик с рекламой вашего сайта - это спам, найдите топик где люди обсуждают тему вашего сайта и коструктивно выскажите своё мнение или компетентно ответьте на вопрос, не забыв указать ваш сайт в подписи.
Добавте ссылку на сайт в подписи ко всем вашим письмам - об этом часто забывают.
Создайте на сайте блог и пару раз в неделю пишите
Дублируйте статьи в блоге на Facebook, Twitter и других подобных сайтах. Не всегда нужно ожидать вирусного эффекта, но пару новых посетителей вы получите.
Если есть немного креативности - создайте прикольное видео, закачайте на YouTube и пропишите ваш сайт в описании. Продублируйте видео на Vimeo и др.
Напишите интересную статью на любую тему и отправте на тематический сайт или даже офлайн журнал. (Да-да, вот оказывается зачем я всё это описываю :-) Продублируйте на сайтах с новостями обо всём на свете, например http://nnm.ru/.
Если вы продаёте товар, то поставте объявления на http://www.ebay.ru/ и аналогичных сайтах. Если даже вы продадите товар за цену ниже себестоимости зато получите ссылки с сайтов с хорошим PR.
В общем - будьте активны и сделайте чтобы вас заметили, если (пока-что) не в результатах поиска так хоть на Facebook или хотя бы http://failblog.org/ ;-).
Шаг №4. Ключевые слова.
Руководство по SEO для начинающих и не очень. Практические шаги. №4. Ключевые слова.
Это продолжение статьи - начало тут: Руководство по SEO для начинающих и не очень. Практические шаги.
Помните информацию о странице в SEOQuake?
Теперь мы обратим внимание на нижнюю часть. Там видны ключевые слова и фразы а также частота их использования на странице. Нужно выбрать (или придумать) несколько слов и фраз по которым ваша страница должна быть найдена и отредактировать текст таким образом, что-бы частота встречаемости этих фраз была около 5%. Если будет больше то поисковые системы заподозрят вас в черном SEO. Не забывайте главное правило: текст должен оставаться легко-читаемым для людей.
Такую же информацию можно получить и на таком сайте: http://tools.seobook.com/general/keyword-density/.
Большой вес имеет текст ссылок. Помните прикол с жалким неудачником?
Так можно проверить и сайты конкурентов, посмотреть как они оптимизировали свой сайт и перенять пару идей.
Дальше: Платим, чтобы получить клиентов.
Помните информацию о странице в SEOQuake?
Теперь мы обратим внимание на нижнюю часть. Там видны ключевые слова и фразы а также частота их использования на странице. Нужно выбрать (или придумать) несколько слов и фраз по которым ваша страница должна быть найдена и отредактировать текст таким образом, что-бы частота встречаемости этих фраз была около 5%. Если будет больше то поисковые системы заподозрят вас в черном SEO. Не забывайте главное правило: текст должен оставаться легко-читаемым для людей.
Такую же информацию можно получить и на таком сайте: http://tools.seobook.com/general/keyword-density/.
Большой вес имеет текст ссылок. Помните прикол с жалким неудачником?
Так можно проверить и сайты конкурентов, посмотреть как они оптимизировали свой сайт и перенять пару идей.
Дальше: Платим, чтобы получить клиентов.
Руководство по SEO для начинающих и не очень. Практические шаги. Шаг 5. Платим, чтобы получить клиентов.
Это продолжение статьи - начало тут: Руководство по SEO для начинающих и не очень. Практические шаги.
Тут мы создадим рекламное объявление которое будет показываться справа в результатах поиска. Таким образом мысделаем Google ещё богаче получим первых довольных клиентов которые вернут нам наши потраченные деньги на рекламу.
Заходим в Google AdWords, регистрируемся и создаём рекламную кампанию. Это будет просто категория различных объявлений. Внутри кампании создаём группу. Объявления в группе показываются в случайном порядке. Создаём одно или несколько объявлений: одна строка с названием, две строки с описанием и ссылка.
Теперь важно выбрать ключевые слова которые должны ввести пользователи Google чтобы ваше объявление появилось справа от результатов. Проявите фантазию - что должны искать пользователи чтобы ваш сайт их заинтересовал? Можно задать несколько ключевых слов или фраз.
Для предварительной оценки ключевых слов попробуйте Google Traffic Estimator. Там можно ввести много разных ключевых слов и предложений и сразу оценить как часто их ищут и сколько будет стоить один клик в Google AdWords. Иногда можно с помощью не большого изменения термина (синонима) рекламироваться на порядок дешевле. Но самые дешевые ключевые слова обычно совсем не популярны - нужно найти балланс.
В настройках кампании можно ограничить показ обявления только по странам, языкам, сетям (только на сайте Google или также и других сайтах использующих Google AdSense), устройствам (смартфоны) и задать максимальные расходы за день.
Поищите, многие сайты раздают ваучеры на 100$ на Google AdWords, тогда вам нужно будет заплатить только 10$ для активации вашей рекламной кампании и рекламировать на все 110$. (Действительно только для новых клиентов, но ведь никто не мешает каждый раз создавать новую учётную запись.)
Вот и всё. Что сам знал - описал. Надеюсь вам было интересно и полезно почитать. Как писать конструктивные комментарии к статье вы знаете. Желаю вам громадного Conversion Rate.
Тут мы создадим рекламное объявление которое будет показываться справа в результатах поиска. Таким образом мы
Заходим в Google AdWords, регистрируемся и создаём рекламную кампанию. Это будет просто категория различных объявлений. Внутри кампании создаём группу. Объявления в группе показываются в случайном порядке. Создаём одно или несколько объявлений: одна строка с названием, две строки с описанием и ссылка.
Теперь важно выбрать ключевые слова которые должны ввести пользователи Google чтобы ваше объявление появилось справа от результатов. Проявите фантазию - что должны искать пользователи чтобы ваш сайт их заинтересовал? Можно задать несколько ключевых слов или фраз.
Для предварительной оценки ключевых слов попробуйте Google Traffic Estimator. Там можно ввести много разных ключевых слов и предложений и сразу оценить как часто их ищут и сколько будет стоить один клик в Google AdWords. Иногда можно с помощью не большого изменения термина (синонима) рекламироваться на порядок дешевле. Но самые дешевые ключевые слова обычно совсем не популярны - нужно найти балланс.
В настройках кампании можно ограничить показ обявления только по странам, языкам, сетям (только на сайте Google или также и других сайтах использующих Google AdSense), устройствам (смартфоны) и задать максимальные расходы за день.
Поищите, многие сайты раздают ваучеры на 100$ на Google AdWords, тогда вам нужно будет заплатить только 10$ для активации вашей рекламной кампании и рекламировать на все 110$. (Действительно только для новых клиентов, но ведь никто не мешает каждый раз создавать новую учётную запись.)
Вот и всё. Что сам знал - описал. Надеюсь вам было интересно и полезно почитать. Как писать конструктивные комментарии к статье вы знаете. Желаю вам громадного Conversion Rate.
Friday, March 30, 2012
Wednesday, March 07, 2012
Kraftort: Kapellenberg, Quellenheiligtum bei Hofheim am Taunus
Abschnitt von http://www.kraftort.org/Deutschland/Hessen/hessen.html
1666 wurde eine Bergkapelle direkt neben dem aus der Eiszeit stammenden Heiligtum errichtet. Zu diesem Datum erhielt der alte “Rabenberg” seinen heutigen Namen. Die Eremitage bei der Wallfahrtskapelle gab der am Westhang des Berges gelegenen Quelle ihren Namen “Einsiedlerborn”.
Höhensiedlung seit 4. Jahrtausend v.Chr.!
Ringwall rund um den Kapellenberg ist aus dem Mittelalter.
Wegbeschreibung: Autobahn Frankfurt-Wiesbaden, Ausfahrt Frankfurt-Zeilsheim. Richtung W der “Zeil” folgend -> Kreuzweg hinauf bis zur Bergkapelle
Tuesday, February 28, 2012
Wednesday, February 15, 2012
Progress bar for a lengthy PHP process
If you ask an average web-developer if it's possible to make a running progress bar on the web-page while it's loading(!), most of them will say "no". This is understandable as practically all web-pages do not exhibit such progress bars and are in a sense "static" - the whole web-site is dynamically generated from a database, but each page is static except for AJAX changes due to user actions. Here I will show how a lengthy PHP process can show a running progress bar while the page is loading. Of course, it doesn't make sense for pages loading within a second or three, but those import/export/dump/analyze/recode/generate scripts which takes ages.
Wednesday, January 25, 2012
How to change the collation for all tables in a MySQL database to UTF-8?
In response to How to change the collation for all tables in a MySQL database to UTF-8? where they only changed the default collation for any column which will be created in the future, I post the script which also changes the collation of each FIELD in the database. I've used it for http://www.mantisbt.org/.
Beware (!) that if your database already contains data in the incorrect encoding this script may corrupt the data. It should be safe to use it for English though.
<?php
require '../config_inc.php';
$db = mysql_connect($g_db_hostname, $g_db_username, $g_db_password);
if(!$db) echo "Cannot connect to the database - incorrect details";
mysql_select_db($g_database_name);
$result=mysql_query('show tables');
while ($tables = mysql_fetch_array($result)) {
foreach ($tables as $value) {
echo '<b>'.$value.'</b><br />';
mysql_query("ALTER TABLE $value COLLATE utf8_general_ci");
alterTable($value);
}
}
function alterTable($table) {
$result=mysql_query('show columns from '.$table);
while ($fields = mysql_fetch_assoc($result)) {
$fieldName = $fields['Field'];
$fieldType = $fields['Type'];
if (substr($fieldType, 0, 7) == 'varchar') {
echo $table.'.'.$fieldName.'<br />';
mysql_query("ALTER TABLE $table CHANGE $fieldName $fieldName $fieldType COLLATE utf8_general_ci");
echo mysql_error();
//print '<pre>'.print_r($fields, true).'</pre>';
}
}
}
echo "The collation of your database has been successfully changed!";
Beware (!) that if your database already contains data in the incorrect encoding this script may corrupt the data. It should be safe to use it for English though.
<?php
require '../config_inc.php';
$db = mysql_connect($g_db_hostname, $g_db_username, $g_db_password);
if(!$db) echo "Cannot connect to the database - incorrect details";
mysql_select_db($g_database_name);
$result=mysql_query('show tables');
while ($tables = mysql_fetch_array($result)) {
foreach ($tables as $value) {
echo '<b>'.$value.'</b><br />';
mysql_query("ALTER TABLE $value COLLATE utf8_general_ci");
alterTable($value);
}
}
function alterTable($table) {
$result=mysql_query('show columns from '.$table);
while ($fields = mysql_fetch_assoc($result)) {
$fieldName = $fields['Field'];
$fieldType = $fields['Type'];
if (substr($fieldType, 0, 7) == 'varchar') {
echo $table.'.'.$fieldName.'<br />';
mysql_query("ALTER TABLE $table CHANGE $fieldName $fieldName $fieldType COLLATE utf8_general_ci");
echo mysql_error();
//print '<pre>'.print_r($fields, true).'</pre>';
}
}
}
echo "The collation of your database has been successfully changed!";
Tuesday, December 06, 2011
Решение судоку с помощью веб-камеры в реальном времени
Очень интересная статья про комбинацию различных методов распознавания изображений (кстати, это тема и моей курсовой) для решения судоку.
http://habrahabr.ru/blogs/algorithm/126373/
http://habrahabr.ru/blogs/algorithm/126373/
Thursday, November 17, 2011
Thursday, October 06, 2011
PHP security tips
When programming in PHP please pay attention to the following tips. PHP code examples below try to make it impossible to make a mistake by hiding default (non-secure) variables and securing the data on the fly. When you get used to it, you will be able to smell insecure code.
Must be escaped: dataXSS ?>
Validating input
Don’t use values from $_REQUEST ($_GET, $_POST) directly assuming they contain data of the necessary data type. Validation or casting is required. For example intval($_REQUEST['id']) will make sure you have an integer. Using a dedicated class for reading URL/Form parameters will allow you to unset($_REQUEST) completely making sure you (or any other developer) is using casting or validation. For example:
class Request {
protected $data = array();
function __construct($other = NULL) {
$this->data = $other ?: $_REQUEST;
if (!$other) unset($_REQUEST);
}
function getInt($name) {
return intval($this->data[$name]);
}
function getTrim($name) {
return trim($this->data[$name]);
}
…
}
$r = new Request();
echo $r->getInt('id'); // 15
echo $_REQUEST['id']; // NULL
Note that once you created an instance of the Request class you can't use $_REQUEST anymore, which is good. Request could be made a singleton in order to be able to access it from multiple controllers.
Escape output
In order to prevent XSS you need to use htmlspecialchars() on every dynamic value which may come from the database, user input or web-service. Similarly to the example above it is recommended to close the possibility of using the values without escaping. For example the following View class (from MVC) doesn't allow accessing query results directly:
class View {
protected $file;
protected $caller;
function __construct($file, $controller) {
$this->file = $file;
$this->caller = $controller;
}
function render() {
$file = 'template/'.$this->file;
ob_start();
require($file);
$content = ob_get_clean();
return $content;
}
function __call($func, array $args) {
$method = array($this->caller, $func);
return call_user_func_array($method, $args);
}
function __get($var) {
return htmlspecialchars($this->caller->$var);
}
}
$c = new Controller();
$c->dataXSS = '';
echo new View('output.phtml', $c);
// ---- output.phtml
Test View Controller
Note that in the template we can access data from the controller directly like this: dataXSS ?>, but this data will be processed with htmlspecialchars() invisibly for you.
Friday, September 23, 2011
Friend Share idea for Android
An Android (and other platforms including PC) app to share MP3 and other files QUICKLY among friends and people around them. The main aspect is that sharing happens without connection to the Internet – device to device.
Upon downloading user has to specify his nickname so that he can be identified among other friends in the vicinity. An application will start searching for the same app running on other devices around you. WiFi works in a radius about 100 meters so your friends have to be close to be able to connect. Shown devices will be shown in the list sorted by the signal strength which roughly corresponds to the distance to them in the real life.
Selecting a person allows to see files which they have shared (and maybe a currently playing MP3 file). Files can be downloaded by clicking on the download icon on the right (see the Android call-log app).
Two shared folders for friends, for non-friends.
Make friends function which asks to gently hit both phones (with gyro sensors) to confirm friending.
Update: I have found out with amazement that such software already exists: http://bu.mp/. Are they reading my mind or the idea is just so obvious simple?
Upon downloading user has to specify his nickname so that he can be identified among other friends in the vicinity. An application will start searching for the same app running on other devices around you. WiFi works in a radius about 100 meters so your friends have to be close to be able to connect. Shown devices will be shown in the list sorted by the signal strength which roughly corresponds to the distance to them in the real life.
Selecting a person allows to see files which they have shared (and maybe a currently playing MP3 file). Files can be downloaded by clicking on the download icon on the right (see the Android call-log app).
Two shared folders for friends, for non-friends.
Make friends function which asks to gently hit both phones (with gyro sensors) to confirm friending.
Update: I have found out with amazement that such software already exists: http://bu.mp/. Are they reading my mind or the idea is just so obvious simple?
Wednesday, August 10, 2011
Route Frankfurt -> Le Grau du Roi
Strangely the route Frankfurt -> Le Grau du Roi (1000 km) toll costs less than the route Le Grau du Roi -> Nice (300 km).
- Frankfurt -> LGDR: 31.40 EUR
- LGDR -> Nice and back: 44.30 EUR
- LGDR -> Frankfurt: 37.10 EUR
Wednesday, July 20, 2011
NL visit 2011
In relation to the previous post, some things we have seen and some things we missed.
Seen:
Seen:
- Man made crater
- Lighthouse Den Haag
- Katwijk am Zee
- Leiden Marktplatz
- Flowerhouse near grass field
- Erasmusbrug
- Splashtours (on water)
- Overblaak
Not seen:
General impressions: architects are stoned and it's good this way.
Thursday, July 14, 2011
Take List
- Паспорта
- Подтверждение из отеля
- Самоучитель голландского
- МП3 курс голландского
- Плавки
- Лопату большую
- Пасочки
- Плавательные игрушки
- Воздушные змеи
- Книгу про песочные замки
- Памперсы
- Ноутбук с кучей фильмиков
- Включить ГПС при выезде
- Икспериа Арк
- Заехать к доктору
- Полотенца,
- Одежды на 2 дня
- Теплую куртку
- Палатку пляжную
- Простилку
- Очки
- Доску для серфинга
- Кредитку
- Стульчик
- Зарядку для мобилки
- Хорошее настроение
- Шорты
- Фотык (без фоток) и зарядку
- Крем от солнца (дождя?)
- Тапки
- Надувную подушку
- Зубную щетку, пасту
- Бритву и лезвия
- Резиновые сапоги
- Резиновый комбинезон
- Фен
- Карты бумажные (sic!)
- ...
Wednesday, July 13, 2011
Wednesday, July 06, 2011
PHP: Transparent Self-Caching of Objects
When programming PHP I work with objects. Some objects exist only once in memory. Either just because they are instantiated once or by using a Singleton design pattern. Other objects are multiple. In PHP, it being a stateless language, these objects need to be created with every page load. Having too many objects loading every time will slow down your web-site. What comes as a natural solution is caching.
Caching is often thought as an outside operation in regards to the objects. Thus it looks scary, you have to change the way you instantiate objects in your code (in many different places) so that it uses caching. Here I will present a way to implement an internal caching - objects will cache themselves almost seamlessly.
Caching is often thought as an outside operation in regards to the objects. Thus it looks scary, you have to change the way you instantiate objects in your code (in many different places) so that it uses caching. Here I will present a way to implement an internal caching - objects will cache themselves almost seamlessly.
Subscribe to:
Posts (Atom)













