Как написать свой движок блога, часть 2. Авторизация в админке. » lamara-nsk.ru


lamara-nsk.ru
Это блог о сео, деньгах, заработке в сети, разработке своих проектов, программировании
и "жизни программиста", бизнесе, блогосфере, фрилансе и многом другом.


Контакты, Реклама в блоге




Как написать свой движок блога, часть 2. Авторизация в админке.

Автор DimoninG, написано 22.08.2008
Рубрика Движки, CMS, Общие советы, на PHP  

Спонсор поста: грузчики

Пришло время второй части саги о создании собственного движка блога.

Первая часть здесь. Но перед этим пара слов на отвлеченную тему.

В предыдущем посте я просил помочь моей супер-черепахе на домик для нее, и уже через несколько часов откликнулся замечательный человек – Илья, пожертвовал в фонд 70 рублей. Он по «призванию» СЕОшник и недавно открыл свой блог, который обещает быть очень неплохим: SEO in Soul.ru, Душевный Блог о SEO и Заработке.

Теперь о создании своего движка блога. Я реализовал следующее: создание/редактирование/удаление постов, создание/редактирование/удаление категорий, написание комментариев и их редактирование через систему администрирования. Скачать то, что получилось можно по ссылке в конце поста (там пока что архив без редактирования комментариев из админки). Когда дойдем до безопасности, я залью этот движок на тестовый поддомен и можно будет посмотреть, что вышло. И опять эта статья обещает быть очень длинной. Боюсь, что придется ее разрезать еще на три части – авторизация в админке (эта статья), действия с постами и категориями, действия с комментариями и комментирование. А потом еще две части – вывод всего этого на сайт и безопасность движка. Пора писать книгу. (Если кого-то не устраивает такая «санта барбара» – пишите, буду делать статьи длиннее)

Для начала замечу, что все GET-параметры передаются через .htaccess и «откуда они берутся» вопрос не принимается :) Это я объяснил в первой части.

Создание системы администрирования.

Я вообще рекомендую всегда разрабатывать движок с админки, т.к. в ней частично или полностью реализован вывод данных, то есть фактически – пользовательская часть. Тогда создание пользовательской части пойдет быстрее, на мой взгляд. В общем, с админки и начнем.

Располагается она по адресу /vrotmnenogi-admin/, как заявлено в ТЗ (см. первую часть). Я довольно быстро раскаялся в своей дурацкой шутке, т.к. писать везде такой длинный адрес не особенно удобно :) . Но от ТЗ мы не будем отступать принципиально, это полезный навык. Простите мне такой бред, я честно не хотел :lol:

Конечно, для начала нужно сделать в админке систему входа, чтобы кто попало не мог редактировать содержимое блога. Авторизация будет вполне обычная – через логин и пароль. Их md5-хеш будет сохраняться в Cookie и по нему пользователь будет проверяться каждый раз, когда что-то делает в админке.

MD5 – в данном случае применяется как однонаправленный алгоритм шифрования строк произвольной длины и получения 128-битного хеша. Другими словами, если зашифровать любое слово этим алгоритмом, то обратно расшифровать его уже нельзя. Понятно, что для проверки нужно зашифровать введенный пользователем логин/пароль и сравнить его с уже имеющимся хешем. Если они совпадают, то пользователь ввел правильный логин/пароль.

Храниться имя и пароль будут прямо в скрипте в виде переменных (файл /vrotmnenogi-admin/index.php, самый верх). Для еще большей путаницы мы будем добавлять в эту связку секретный ключ (произвольный набор символов), чтобы хакер совсем сломал голову, расшифровывая данный хеш.

Итак, как мы будем проверять вход? Для этого создан файл logintest.php, лежащий прямо в корне админки. Первой строкой в этом файле мы смотрим, не пытается ли пользователь залогиниться? Логин передается в переменной $_POST['login'] и если она не пуста, значит – пытается. Соответственно первым ветвлением IF мы проверяем, что он нам такого прислал и сравниваем с хешем строк пароля, логина и секретного ключа:


if ($_POST['login']){
	if ($_POST['login'] == $admin_login &&
		$_POST['password'] == $admin_password){
		setcookie ("admin_login", $protection_combo,
                                 time() + 60*60*24*7);
		header ("location: /vrotmnenogi-admin/");
	}
}

Если проверка пройдена, то мы устанавливаем куки, в которую и записан этот хеш. Куки ставится на неделю и работает только для каталога /vrotmnenogi-admin/ нашего движка. И потом отправляем заголовок, который переадресовывает нас на главную страницу. То есть – для пользователя не видно, что выполняется какой-то скрипт, все происходит «мгновенно».

Следующий блок в этом файле – это как раз вывод формы ввода логина и пароля. То есть, если не передано поле $_POST['login'] и данные в куки не совпадают с хешем (попытка взлома или просто нет куки – не залогинен), то выводится форма входа:


// Проверка, введен ли пароль админа
if ($_COOKIE['admin_login'] != $protection_combo){
	?>
	<form action="./index.php" method="post">
		Логин: <input name="login"><br>
		Пароль: <input name="password" type="password"><br>
		<input type="submit" value="Зайти на огонек">
	</form>
	<?php
	exit;
}

Кстати, обратите, пожалуйста внимание на то, что после вывода формы обязательно должна быть команда exit. Иначе после формы выведется сама админка. После нажатия кнопки «Войти» все данные как раз и проверяются блоком кода, описанным чуть выше.

Теперь выход. Тут все очень просто. В файле index.php я создал кнопку, при нажатии на которую выполняется скрипт logout.php. Кнопку назвал незатейливо – «Выйти» :)

<form action="./logout.php" method="post">
	<input type="submit" value="Выйти">
</form>

Никакого криминала :) Ну и сам скрипт выхода. Он просто убивает куки с хешем логина, пароля и секретного ключа, из-за чего пользователь не пройдет проверку в файле logintest.php:

<?php
setcookie ("admin_login", "");
header ("location: /vrotmnenogi-admin/");
?>

Убиваем куки (передав ей пустое значение) и отправляем пользователя на главную страницу. Вот так.

С админкой на этом все. Следующая статья в этой серии будет, как я и сказал, о постах и о категориях. Удачи!

Скачать архив с движком dblog. Используйте как угодно, только название dblog остается за мной ;) В архиве, кстати, функционала больше, чем я здесь описал.

__________________________

Если никто не против, чуть-чуть личного. Заметил, что писать в блог для меня стало чем-то нужным. То есть меня мучает ощущение «надо бы написать в блог». Приятное ощущение, что-то вроде тяги к наркотикам для наркоманов :lol: При этом, когда пишешь в блог, это ощущение на день-два отпускает. Мне страшно :shock:

Кстати, я вроде бы пошел на поправку (болел тут несколько дней). Моя девушка подарила мне забавную картинку :)

Спасибо ей большое, очень классно получилось : )))

А еще по поводу болезней. Трехчасовой рабочий день пишет в своем блоге другой взгляд на лень (медицинский, так сказать). После чего (по совету ТРД?) Кишиневский бомж проверяется у врача и у него находят опухоль щитовидной железы.

Дорогой Кишиневский бомж, во-первых: мы все с тобой, держись! А во-вторых, я спросил у знающих людей, говорят, что эти опухоли доброкачественные и с ними живет чуть ли не половина жителей Санкт-Петербурга и даже не знает об этом. Все будет хорошо ;)



Отзывов (38) на «Как написать свой движок блога, часть 2. Авторизация в админке.»


ae471697

    пишет:

    >Я вообще рекомендую всегда разрабатывать движок с админки

    Незнаю как у других, а для меня создание админки – самое сложное. Понимаю, что как раз и нужно начинать с самого сложного, но у меня так не получается. Все время пишу сайт начиная с пользовательской части… а на админку потом … забиваю :lol: )))))) Приходится потом редактировать через phpMyAdmin :lol:


    пишет:

    Согласен, админка – сложно и не интересно. Зто потом, когда пишешь пользовательскую часть, можно протестировать админку по-полной просто во время тестов пользовательской части ;)


    пишет:

    Хотел влезть с подробным комментарием, но потом передумал. DimoninG, код плохой, если не сказать больше. У тебя вроде большой опыт. Зачем для блога такое пишешь?


    пишет:

    Секрет, лучше бы «влез» с подробными, говорить что-то без обоснования – очень глупо звучит.

    Вообще гря, это все писалось очень быстро и что-то там придумывать совершенно не хотелось. Задача здесь все же – показать как можно сделать свой блог, а не написать эталонный код. Хотя я лично вообще не делю код на плохой и хороший. Мы тут, в самом деле, не автопилот для самолета пишем. И всякие там педантичные маньяки, которые считают выигрыши по производительности в десятую секунды – не по адресу, не для этого проекта :)


    пишет:

    Да и еще что странно – один человек уже пристал ко мне с безопасностью. А то, что я ей займусь в конце – внимание на это не обратил. Такое начинает бесить все больше. Надеюсь, твой комент не на эту тему был.


    пишет:

    СПС за умные советы, надеюсь пригодяться!


    пишет:

    когда продолжение будет??


    пишет:

    На днях. Сейчас чуть-чуть важнее работа ;)


    пишет:

    да, кстати, не работает прикрученная фича Комментарии. В админке: Непроверенных коментариев ($x).


    пишет:

    Да и еще что странно – один человек уже пристал ко мне с безопасностью. А то, что я ей займусь в конце – внимание на это не обратил.

    Гы, addslashes() нужно приучаться сразу ставить, а не оставлять на потом.

    Секрет, лучше бы “влез” с подробными

    Если с первого взгляда:
    1. Отсутствие addslashes()/htmlspecialchars()
    2. Использовать в функциях $_GET/$_POST – очень плохо. Функции должны передаваться аргументы, а использование (супер)глобальных переменных без всякой необходимости является дурным тоном и вводит лишние зависимости.
    3. Разделение управляющей логики и презентационной части. Почитайте про MVC. Если человек будет пытаться подстроить дизайн под себя, сколько файлов ему нужн будет перелопатить в Вашем случае? Малейшая ошибка в functions.php может привести к неработоспособности всего кода. И использование die() вместо возврата ошибки тоже впечатляет.
    4. show_post() – вообще «гениальное» творение. Посмотрите на if, ничего не находите?

    Задача здесь все же – показать как можно сделать свой блог

    В том-то и дело. Учить нужно на хороших примерах. На тех, которые можно использовать с минимальными изменениями.


    пишет:

    Владимир, подобных комментариев, как Ваш я уже начиался тонну. Поэтому, отвечаю грубо: Вы, блядь, когда научитесь сначала читать статьи, а потом постить коменты?!. Вот, полегчало. Извиняюсь за грубость тона :) Я уже говорил, что не буду использовать модель разделения логики и представления, что подумаю о безопасности в следующих частях.

    По пути: единственный достойным комментарием считаю только пункт 2. Но тут не согласен: переменные и так существуют, они и без того глобальные. Поэтому нет смысла захламлять память лишними параметрами функций.


    пишет:

    подумаю о безопасности в следующих частях

    О безопасности думать в любом случае придется, просто с Вашим подходом это называется «недостаточное планирование». Объясняю: Вы добавляете «действия с постами и категориями, действия с комментариями и комментирование», потом «вывод всего этого на сайт». Потом начинаете заботиться о безопасности. То есть Вам придется открыть каждый файл, во все запросы добавлять addslashes, проверку данных и т.п. Такая работа чревата ошибками: недоглядел. Или вообще при жестком дедлайне/бюджете не выполняется. В результате получается это (из машин, на которых стоит ArticleDashboard, получается неплохой ботнет, но это к слову). Короче, на добавление элементарного addslashes() в части 4, Вы потратите больше времени, чем если бы Вы это делали в самом начале. Потом, подумайте о пользователях, которые не дождутся последней части. Они будут уверены, что код хороший, ибо его писал «реальный программист» с трехзначным числом RSS-подписчиков. И они не исправят эти ляпы.

    Мораль истории в том, что «everything worth doing, worth doing well». Если Вы хотите кому-то что-то показать (хотя бы как концепт), делайте это правильно. Не забывайте о педагогическом эффекте ваших статей. Элементарные проверки должны быть везде. Иначе, как минимум, складывается негативное впечатление о программисте.

    говорил, что не буду использовать модель разделения логики и представления

    Специально пересмотрел статью, и не нашел этого упоминания.

    переменные и так существуют, они и без того глобальные

    DimoninG, Вы работали над большими проектами и в команде? Вам знакомо понятие «системный подход»? Вы знаете, что такое «повторное использование кода»? Вы же где-то писали о себе как о фрилансере с большим стажем. Лично я, выступая в роли HR (а у меня были мысли пригласить Вас в команду после статьи с капчей) или даже заказчика, не взял бы Вас в команду, после того, как посмотрел бы на код движка. Это я говорю как программист/системотехник с более чем 18-летним стажем. Ну и как бывший препод программирования в универе :wink:

    Поэтому нет смысла захламлять память лишними параметрами функций

    Ну да, теоретики программирования были неправы :-) Еще в далеком 1973 году считалось, что использование глобальных переменных – муветон.

    Ладно, параметры занимают лишнее место в памяти :lol: , а чем оправдано использование die() вместо возвращения ошибки? В конце концов, даже exceptions в PHP есть…

    единственный достойным комментарием считаю только пункт 2

    Значит, по пункту 4 ничего-таки не заметили? Эх…


    пишет:

    Спасибо за длинный коммент :)

    Начну с того, что в нормальной команде, как ни странно, мне поработать так и не вышло. То есть для меня «работа в команде» означает постоянное переключение задач, доработку чуждого кода, ругань и маты. Видимо, не повезло. Я уж не говорю о том, что нормально поиспользовать всякие системы контроля версий и прочее – не довелось. Аналогично, в фирмах, где работал – обычно кодил сайт я один, или какие-то мелкие детали потом доделывали другие ребята.

    Поэтому с некоторого времени я решил работать только один – это оказалось легче. С удовольствием бы поработал в команде и посмотрел, как это делается у нормальных людей.

    > О безопасности думать в любом случае придется, просто с Вашим подходом это называется “недостаточное планирование”.

    Я бы назвал Ваш подход – головной болью на ровном месте. Назвать всякими умными словами (мерчендайзер! андронный коллайдер! +) ) всегда можно. При этом половина прочитавших наверняка решит, что «фу, да он недостаточно спланировал!» не понимая вообще, что это значит.

    Я уверен, убежден и никто меня в этом не переубедит, что просто у меня другой подход. Стиль, если хотите.

    Никто не запрещает заниматься безопасностью в конце, с чего бы это? По своему опыту я знаю, что у меня – наоборот! – меньше ошибок, если я только безопасностью и занят.

    > Или вообще при жестком дедлайне/бюджете не выполняется.

    Если честно, да, бывало. Обычно я предупреждал заказчика, что если хочет еще и безопасность – давайте расширим сроки или увеличим бюджет. 100% заказчиков отказывались. Их дело.

    > И они не исправят эти ляпы.

    Я во всех частях говорю, что будет идти дальше. Если они не дождутся безопасности – в этом виноват уже не я. Аналогично, если кто-то решил, что моя капча – это «мега-находка», я честно всех предупредил, что ломается она легко, но пока что уникальна.

    > Элементарные проверки должны быть везде. Иначе, как минимум, складывается негативное впечатление о программисте.

    Я вообще довольно импульсивный и Вы меня определенно выводите из себя. По какой, еще раз объясните мне, причине я не могу заняться безопасностью в конце? Единственная ошибка, которую я допустил – это выложил промежуточный результат, получается так? Не надо еще раз о мифическом «планировании». Если человек пишет правой рукой, Вы будите его переучивать писать левой?

    > Специально пересмотрел статью, и не нашел этого упоминания.

    Видимо, то ли я это сказал в комментариях, то ли в личку кому-то, но определенно это мне уже были предьявлено недели 3 назад. Я специально решил не захламлять головы новичкам. Врубиться в эту модель – не так-то просто, если раньше ее никогда не видел.

    > Ну и как бывший препод программирования в универе

    Вооот, вооот в чем дело ;)

    > а чем оправдано использование die() вместо возвращения ошибки? В конце концов, даже exceptions в PHP есть…

    Исключения – вроде бы только в пятой ветке. А «дай» я использую, т.к. нет смысла возвращать ошибку и использовать тот же «дай» :) Или, не знаю, echo «вротмненоги»; exit; – аналог «даю».

    По четвертому пункту, честно, я даже не посмотрел ничего, а функцию на слух не помню, конечно. Переустанавливал пару раз систему (мои мучения по поводу выбора оси для ноута), так что двигло стерлось нафиг.

    Да и еще. По поводу педагогического эффекта моих статей. Несомненно он есть. Но еще несомненно, что это БЛОГ, а не университет (то есть – «что хочу, то и ворочу, а недовольные могут не читать» – концепция блога, не так ли?).


    пишет:

    Вы определенно меня завели ))
    Может еще рефакторинга коснемся, м? А потом подумаем, что будет, если разложить нагрузку на несколько серверов? М? Не, ну так нельзя, люди ))) Я сам люблю выпендриваться ))) Но не настолько же. Другой блоггер стер бы такие коменты нафиг, т.к. уже сам отвечал на такие вопросы.

    А вот Ваша статья http://blog.sjinks.org.ua/mysql/9-security-they-talk-so-much-about/ – очень наглядная, приятно почитать.


    пишет:

    Может еще рефакторинга коснемся

    Сначала нужно будет о TDD говорить :-)

    потом подумаем, что будет, если разложить нагрузку на несколько серверов

    Сначала рефакторинг :-) В Вашем случае даже репликацию будет сделать проблематично.

    Я вообще довольно импульсивный и Вы меня определенно выводите из себя.

    «Спокойствие, только спокойствие», как говаоривал небезызвестный мультперсонаж.

    По какой, еще раз объясните мне, причине я не могу заняться безопасностью в конце?

    Мы просто вкладываем разный смысл в понятие безопасность.
    Сама «безопасность» – аудит сайта, выявление уязвимостей, стрессовое тестирование и т.п. – действительно идет в конце проекта. Просто, как показывает практика, полное тестирование (в прямом смысле этого слова) – это миф: в мало-мальски серьезном проекте очень трудно протестировать все возможные пути в коде (очень показательна в этом плане история о том, как школьник обнаружил XSS-уязвимость в GMail).

    А всякие простые вещи – наподобие intval/addslashes/htmlspecialchrs – имеет смсыл использовать сразу при написании кода :-) Мое мнение :-)

    Я бы назвал Ваш подход – головной болью на ровном месте.

    Попробую с другой стороны: где именно при «моем» подходе головная боль? В идеале при использовании обоих подходов мы получим одинаковый результат. Но в «моем» случае я один раз написал и забыл, в Вашем – написал, вернулся и переписал. Видите ли, на практике очень трудно убедить заказчика (я сейчас говорю о забугорных заказчиках) почему мне нужен еще один час (который он оплачивает), чтобы расставить везде всякие там addslashes. Раз я их там изначально не поставил (при условии, что они нужны) – это моя ошибка (что с радостью подтвердят тестеры/программисты заказчика), следовательно, свои ошибки я должен исправлять за свой счет. Так вот работаю серьезные компании.

    Я уверен, убежден и никто меня в этом не переубедит, что просто у меня другой подход.

    Да я не спорю, я просто указываю на некоторые недостатки такого подхода и чем они грозят при работе в серьезной конторе.

    Единственная ошибка, которую я допустил – это выложил промежуточный результат, получается так?

    Посмотрим с точки зрения заказчика: я потребовал промежуточную версию, чтобы посмотреть, как у программиста идут дела, в состоянии ли он сделать то, что обещал и пр. – в общем, обычная проверка для человека, который не хочет зря тратить деньги. Я даю этот прмежуточный результат своему тестеру (предупреждаю его о том, что это сырая альфа). Тестер – он тоже человек, ему тоже нужно показать, что он работает, а не штаны просиживает. Он лезет в код. Код аккуратный, признаю. Лезет в запросы. А там – никаких проверок данных – потенциальные критические уязвимости. Он смотрит другие запросы. Там такая же картина. Для запросов используется mysql_query(), следовательно, для того, чтобы закрыть все дырки, нужно в любом случае лазить по всем запросам. Что в этом случае сообщит тестер заказчику? Видимо то, что code is vulnerable by design. После этого заказчик либо отберет у Вас проект, либо заставит бесплатно исправлять. Не раз такое видел. Ни одно, ни другое хорошей репутации Вам не прибавит, согласитесь.

    Это я Вам рассказал с точки зрения заказчика. Опять же, основываясь на своем восемнадцатилетнем опыте. А так как заказчик – это тот, кто платит, его обычно трудно переубедить, если имеются серьезные косяки.

    Я не буду вдаваться в подробности, где именно была допущена «та самая» ошибка, каждый сделает выводы для себя сам.

    Если человек пишет правой рукой, Вы будите его переучивать писать левой?

    Нет, а смысл?

    В любом случае, это сравнение некорректное. Более того, переучивать – не моя задача, я просто указал на некоторые недостатки. Ведь мы учимся именно на ошибках :-)


    пишет:

    Кстати, да. Тут, я согласен. Просто последнее время я пишу только для себя и там я могу устраивать полный разгул – добавлять проверки в конце, писать изначально полную галиматью, а только потом заняться мало-мальским улучшением и оптимизацией и так далее.

    При работе на заказчика я обычно не показываю промежуточный этап. Даже больше – я не забочусь о безопасности и предлагаю за это доплатить отдельно, т.к. я искренее считаю, что «безопасность» – не входит в «стандартный комплект». Простите, но жить тоже нужно на что-то.

    Но Ваш подход (только в плане работы с заказчиком! так я остаются при своем мнении) – гораздо лучше. Даже хороший программист может такой «случайностью» заслужить репутацию ужасного, что… ужасно :)


    пишет:

    Господи, надеюсь ув. DimoninG не закинул написание столь полезной статьи. Мне через две недели необходимо сдать готовый блог, а я без понятия как его написать :smile:


    пишет:

    qwerty, закинул. Некогда.


    пишет:

    Для запрета входа в админку я поступаю проще, защищаю папку с файлами админки с помощью .хтакцес и .хтпасворд паролем (внутренее средство Апач для защиты директорий). Заодно и исчезают 2 проблемы:
    1. Невозможность войти в админку если куки отключены в браузере
    2. Решение несанкционированного доступа к админке, если вы пользовались чужим компьютером и забыли нажать «Выход»


    пишет:

    PSVlab, ну уж не скажите. Если делать многопользовательскую админку, то это станет сложнее куков. Кроме того, хеш пароля, который генерит htpasswd.exe, насколько я понял, отличается от версии к версии и от ОС к ОС (сгенеренный пароль на локалхосте у меня не понимает хостинг, приходится лезть через ssh и генерить там).


    пишет:

    DimoninG, ну во первых вы сами пишите про то, что это простой движочек и для новичков, отсюда – какая многопользовательская админка?
    Во-вторых будет не сложно разграничить админов если изначально их помещать в различные группы хтпасворд


    пишет:

    нормуль, есть свои плюсы НО не всегда помогает


    пишет:

    Блин! Че вот те кто умеют програмировать лезут на такие блоги со своими коментами? Такие умные – пишите статьи о том как свою CMS сделать и поподробнее. Автору респект! Трудился человек, а вы ему охоту продолжать отбиваете. Достали. На какой блог не зайдешь – везде дальше третьей статьи никто не пишет. Суки задолбали, понаучились в институтах, лезете изовсех щелей! Не трожьте блин блогера!


    пишет:

    Юрий, вот спасибо, честно приятно. Я дальше писать даже не стал, наполучал тут отзывов… Не захотелось писать еще. чтобы таких же не наполучать.


    пишет:

    Так я и знал. Не знаю с чем связано – а так по всему интернету. А попробуй набери в яндексе «Пишем свой движок для сайта» – первым и единственным нормальным – этот блог выходит. Больше нет никого. ЭЭЭй! где вы, умники? Критиковать блин каждый горазд!

    ——-
    PS
    ——-
    Автору еще раз респект.


    пишет:

    Спасибо, Юра, еще раз. Благодаря таким, как Вы авторы как раз и начинают писать дальше. Поверьте, это довольно тяжелая работа – объяснять. И когда получаешь еще и негатив разных «умников» – это отбивает охоту. Но характерно то, что негатив обычно от тех, кто УЖЕ умеет писать. А там кто ХОЧЕТ научиться – не на чем учиться.


    пишет:

    Ну у тебя зачетно получается объяснять. Я вообще не секу впрограмировании, но ты описываешь понятно все. И коменты как надо. Я много всяких статей читал и читаю – твои реально ближе к пониманию. Но так и знал, что ты продолжать не будешь.


    пишет:

    очень даже интересно. рекомендую


    пишет:

    DimoninG, огромное спасибо за статью!
    Очень помогло (сам только начинаю познавать основы сайтостроения).

    Хотелось бы увидеть продолжение. Очень хотелось бы :) .


    пишет:

    Да, где продолжение?


    пишет:

    Хотелось бы прочитать пост про пагинацию для данной цмс. Очень уж автор хорошо все объясняет.
    Заранее спасибо, если найдете время.


    пишет:

    Привет автору статьи, описываю исключительно свое мнение.
    Я прочитал много книг и статей по программированию на php и в 99% случаев все примеры написаны в этих книгах без учета безопасности. Я считаю что в случае если вы уделите этому большее внимание именно во время написания своих скриптов, то у вас будет больше читающих, т.к. тема безопасности очень лично для меня актуальна, и судя по комментариям с критикой актуальность темы безопасности только подтверждается.


    пишет:

    О, нашей мысли обольщенье,
    Ты – человеческое я,
    Не таково ль твое значенье,
    Не такова ль судьба твоя?
    Никого так ловко не обманываем мы и не обходим лестью, как самих себя.
    Но в принципе блог интересныйЭ а главное много поучительного материала для юзеров.
    Я уже год пишу, все времени тет.


    пишет:

    Заглянул вот в мануалы по php для функции addslashes()и увидел что она автоматически применяется к суперглобальным массивам GET и POST в случае если в php.ini параметр magic_quotes_gpc стоит в on .

    Директива конфигурации magic_quotes_gpc по умолчанию имеет значение on, при этом функция addslashes() автоматически применяется ко всем данным GET, POST, и COOKIE. Не используйте addslashes() для данных, обработанных magic_quotes_gpc, чтобы избежать двойного экранирования. Для проверки состояния этой директивы используется get_magic_quotes_gpc().


    пишет:

    :wink: C П А С И Б О – Б О Л Ь Ш О Е!!!
    Я ещё года пол назад читал, стать нужная, DimoninG ты реально многим помог этой статьёй, и давай как говориться не выламывайся продолжай писать, я работаю дизайнером сам на себя, разные cms, скрипты, суть понимаю, но особо что то изучать времени нету. :sad:

    На счёт умников, это задротня (хуесосы)извиняюсь за маты!
    Обсирать одно а помогать начинающим это другое, я тоже могу не прочитавши статью обосрать по самое не могу, но я уважаю труд! Короче поддерживаю DimoninG мужик давай ЗА РУСЬ продолжай, я всегда посылаю, критиков открытым текстом на хуй, поверь благодарных тебе намного больше, 90% кто это читал, так что давай я блин пол года ожидаю, :lol: продолжения банкета! :smile:


    пишет:

    АВТОР!!! СЛЫШИШ МЕНЯ???? АВТОР!!!!!
    ЕСЛИ ТЫ НЕ ПРОДОЛЖИШ ПИСАТЬ Эту СТАТЬЮ, Я ПОКОНЧКУ ЖИЗНЬ
    САМОУБИЙСТВОМ, И ТЫ БУДЕШ В ЭТОМ ВИНОВАт!!!
    ДОПИШИ ПЛИЗ!


    пишет:

    В принципе, я согласен с Юрием. Пусть те профи, которые так горазды критиковать чужую работу, пишут свои мануалы по созданию движков. В конце концов, всё это пишется НЕ ДЛЯ НИХ. А для простых начинающих пользователей. :) Все, кому действительно интересно, вполне смогут найти недостатки и исправить их самостоятельно. С нетерпением жду продолжения.


    пишет:

    Имею некий опыт написания прэктов на php. Довольно много ковырялся в различных cms, кодил сам. В данный момент пишу движок блога для своего сайта. Автору респект за начинание. Тем не менее, не могу не согласиться с критикой. Есть множество книг (не все в электронке – зайдите в книжный и спросите php+mysql для начинающих), в которых приведены примеры движков. В тч блогов. Примеры учебные. В них никакие проверки не реализуются. Если автор хочет создать действительно полезный цикл статей, я бы советовал ему сразу писать безопасный код с объяснением почему это должно быть именно так, или хотя бы со ссылками на описание способа атаки. Ничего подобного гугл по моим запросам не выплюнул. Либо там был кривой код, который только введёт новичка в заблуждение. Я бы сам не взялся писать подобную статью, хотя идея была. Очень хотелось бы увидеть продолжение цикла статей, особенно с учётом моего пожелания.

    А на тему того, чтобы предлагать заказчику потом доплатить за безопасность проэкта… Если по-честному, то неплохо было бы предлагать сразу 2 варианта различные по стоимости: безопасный и небезопасный, но тогда будет сложно объяснить, почему ваш безопасный вариант дороже варианта Васи Пупкина, который клянётся в идеальности своего кода. Вобщем, я считаю, что это не самый лучший вариант. Особенно для фрилансера. Выпуск сырого кода, как конечного продукта, может подорвать вашу репутацию, и с вами просто не захотят потом работать. Впрочем, это всё уже философия. А так… ждём статьи – интересно. Может и я для себя узнаю что-то новое, увижу оригинальную идею.


Оставьте свой комментарий

Что здесь почитать?



1.   Разработки.
1.1 Плагин "Я не робот"
1.2 Плагин "Код Adsense прямо в пост"

2.   Заработай.
2.1 Блогун: 20$ в день
2.2 Уходим от налогов в Sape
2.3 Хватит думать, пора зарабатывать

3.   Акции и конкурсы.
3.1 Ссылка за "Рабочий стол"

Показать весь список.

-->







Блог на движке WordPress и тема для него создана DimoninG'ом в 2007 году.
Все материалы авторские, их копирование запрещено законом об авторском праве.