Итак чуть теории, чтобы понять мой пост.htmlspecialchars() - функция в пхп, кодирующая html и другие скрипты так, чтобы в браузере они выглядели так же как выглядят в блокноте, т е со всеми тегами и прочей херней.
http://masakra.ru - сайт, сайт с разными приколами, который мы с товарищем раскручиваем и заодно пробуем свои силы в этой сфере. Т е такой учебный сайт с возможным продвижением его в будущее.
cron/crontab - штучка в линуксе, для установки планировщика, т е чтобы определенные программы запускались с определенным периодом в определенное время
Предыстория:Недавно я решил написать скриптик, который будет две категории новостей (демотиваторы и фотоприколы) делать более приемлемым для поисковиков. Написал за вечер, ночь трахался с кодировками чтобы красиво отображало. Смысл скриптика - запускается каждый день автоматически и изменяет две новости, т е вставляет популярный фразы с разным шрифтом. Домучал, сделал, затестил, все хорошо красиво работает. Оставалось тока cron настроить. на что просто не хватило сил, в итоге отложил это дело на позже, пока просто запуская скрипт в ручную. Правда тесты показали, что почему то надо запускать скрипт два раза, т к с первого раза он работал тока на половину.
Сама история:В 23 часов вспомнил про скрипт свой, что надо запустить, залез на сервак, запустил раз, второй, вроде сработало все ну и собираясь спать решил написать товарищу чтобы он cron настроил так чтобы работало все гуд. Он правда удивился и поржал что надо запускать несколько раз, что меня ввергло в обиду и решил я с дуру найти в чем же подвох, где же ошибка скрипта.
После минут 15 ковыряний начал неспеша изменять и запускать свой скрипт, тестируя прямо на серваке дабы не терять времени. Результат остававлся неизменным: стабильно срабатывало на второй раз. Тестил я тестил, взял еще одну новость, не измененную, чтобы лучше было видно и дальше в путь. После часа тестов, уже полностью разуверевшись в своей победе решил попробывать функцию htmlspecialchars над новостью, а вдруг поможет. Функция не помогла, вместо обычного:
<h1 style="text-align: center;">Прикольные картинки в черных рамках с подписями</h1>
<p> </p>
<div style="text-align: center;"><img src="http://masakra.ru/uploads/posts/2010-03/1267836586_demotivatori_114.jpg" border="0" alt="Прикольные демотиваторы" /></div>
<div></div>она выдала:
&amp;lt;h1 style=&amp;quot;text-align: center;&amp;quot;&amp;gt;?????????? ???????? ? ?????? ?????? ? ?????????&amp;lt;/h1&amp;gt; &amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt; &amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;http://masakra.ru/uploads/posts/201Ужаснувшись и поблагодарив бога что додумался открыть новость в редакторе и преждевренно сохранить ее. вернул ее на место и уже собравишь топать спать случайно наткнулся на две другие сегодняшние новости, в холодном поту осознавая, что их тоже тестил и что вместо новости нормальной там полный пи..дец. Закуривая сигарету открываю две новости в отдельных редакторах и ужасаюсь: та же хрень, вот тока бэкапов их я не делал (бляха а собирался спать идти 2 часа назад)
С горечью похоронив две новости, решил их полностью удалить, заменив на какие-нибудь другие. Но в процессе удаления, а точнее перед нажатием Delete возникла мысль, что может есть функция обратная htmlspecialchars(), которая вернет все на место. Выкуривая очередную сигареты быстро лазил по сайтам в поисках панацеи и о чудо, она нашлась. Недолго думая впихнул код, отменяющий действие хтмлчарз в скрипт, сохранил, запускаю, для большей уверенности еще два раза не думая запустил скрипт. Проверяю новости и .... и пусто, за три раза скрипт умудрился полностью удалить всю новость, к тому же безвозратно. Закуривая следующую сигарету, похоронив новости уже второй раз начинаю неспеша закрывать миллион вкладок в браузере и случайно наталкиваюсь на две редактируемые мной новости. Их, как оказалось, я открыл в редакторе и они там сохранились, ну и пусть что в виде:
&amp;lt;h1 style=&amp;quot;text-align: center;&amp;quot;&amp;gt;?????????? ???????? ? ?????? ?????? ? ?????????&amp;lt;/h1&amp;gt; &amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt; &amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;http://masakra.ru/uploads/posts/201Главное, что они остались живы. На сей раз, наученный опытом удаления новостей. Уже на локальном сервере начал писать скрипт по отмене хтмлспешлчарз. Написал, запустил один раз. Вышло:
<h1 style="text-align: center;">?????????? ???????? ? ?????? ?????? ? ????????? </h1> <p>&nbsp;</p> <div style=&q uot;text-align: center;">< img src="http://masakra.ru/uploads/ post
Не совсем то, чего ожидал, но уже нечто похожее на первоначальную новость. Запускаю скрипт второй раз и... ААААААААААА победа, новость спасенаааааа!!!! Правда с небольшими недостаткоми: все же русские буквы на место вопросиков вернуть не получилось, но все же новость спасенаааааа!!!! Быстро исправив так как было прежде, отредактировал новости положенным образом, вернул на место все в скрипте, закуриваю уже последнюю за эту ночь сигарету. Но уже не со страхом, а с чувством собственного достоинства :)
Сразу в голову приходит поговорка:
"Как китайские рабочие: сначала придумывают проблему а затем героически ее преодалевают". Так же мысль, что благодоря своему же идиотизму беспощадно прое*ал полночи, зато очень даже поднялась самооценка и настроение:)
Мораль:1. Опытные программисты никогда не трогают то, что работает.
2. Надо на лбу написать слово backup и поставить около ноута зеркало, дабы всегда помнить, что никогда нельзя напрямую работать с данными: надо создавать копию на локальном компе и не забывать про дамп (dump = backup) базы данных.
PS. Чета как то наверное не очень интересно получилось, но зато мне весело и вроде как поделился, надеюсь кто-нибудь да поймет мой праздник жизни :)
сайт с приколами