|
|
|
| Наверное таким вопросом задается каждый программист который хочет добиться успехов в дальнейшем. Так вот у меня тот же самый вопрос, для тех же самых совершений, по причине того, когда я начинаю писать скрипт, то я не знаю как сделать компактнее. Вот к примеру авторизацию я недавно писал(для себя, просто так). Файл auto.php . В коде, в начале: проверка существуют ли сессии и имеют ли они значени, если да, то "Здравствуйте сессион[логин]......"/ Если нет, то выводится идет проверка, существуют ли переменные постлогин и постпасс и есть ли в них значения, если да, то обезвреживаем их (я имею ввиду htmlspecialchar и остальное...) и проверяем по базе, есть ли такие логин и пасс. Если да, то сессионлогин = постлогин и сессионпасс = постпасс. Если в базе нет, то пишем, не верный логин или пароль и выводим опять форму. . Если постлогин и постпасс нет или они не имеют значения, echo заполнены не все поля! + опять форму.
Воот то что под наклоном у меня под сомнением. И кстати, этот скрипт не работает. Попросил своего знакомого программиста исправить, он написал свой вариант. Правда там он сделал на 7ми файлах, а я на 2х.
Вот собственно и вопрос. Может кто знает какие нибудь книги. Подскажите пожалуйста... Или это дело опыта? | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 00:32)
| | >существуют ли переменные постлогин и постпасс и есть ли в них значения, если да,
>то обезвреживаем их (я имею ввиду htmlspecialchar и остальное...)
>и проверяем по базе, есть ли такие логин и пасс
То есть, добавляем "мусора", и ищем в базе? Надо тогда полагать, что вы этот "обезвреживающий мусор" так и пишите в базу? | |
|
|
|
|
|
|
|
для: sim5
(05.09.2010 в 01:21)
| | >То есть, добавляем "мусора", и ищем в базе?
Что вы имеете ввиду? Т.е по вашему $_POST['login'] = htmlspecialchars(abbsleshes(trim($_POST['login']))); это мусор? | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 10:55)
| | >htmlspecialchars(abbsleshes(trim($_POST['login']))); это мусор?
abbsleshes - 100% - ный.
А по вашему так проще проверять html-представления символов нежели сами символы, и в базе держать такой же бардак? Htmlspecialchars и addslashes разработчики придумали не от страха, а от понимания ситуации. | |
|
|
|
|
|
|
|
для: sim5
(05.09.2010 в 12:49)
| | Да, извиняюсь за не правильность написания функции. Ну кажется я понял вас. Вы хотите сказать что в базе при регистрации, не как не может оказаться символов с которыми работает htmlspecialchars, так как при регистрации допустим, работают регулярные выражения |^[a-z0-9_]$|i которые не дадут записать информацию в базу которая не соответствует регулярным выражениям! | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 13:34)
| | При чем тут рег. выражения - у вас кроме имен и паролей база более ничего содержать не будет? Кроме как поиска, например, этих данных в базе, поиска иных не предполагается? htmlspecialchars(addslashes(trim($_POST и $_GET данные))) пишут не от понимания, а от большого перепуга - нет здесь ни какой проверки!
База данных как и мозг человека может содержать в себе первоисточники, как "плиз", так крепкое русское "направление пути". При этом для базы, как и для мозга, это одно и тоже - слова, но только человек интеллегентный при разговоре не будет употреблять "направление пути", а если и будет, то заменит его на "*****". А в мозгу своем вы держите их не боясь, в "открытом" виде.
Вы где-то увидели этот еретический код и не разобравшись в этой мути применяете его, совсем не задумываясь о последствиях. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 13:34)
| | Перед занесением данных в базу не стоит обрабатывать их с помощью htmlspecialchars(), просто обезопасьтесь от SQL-инъекций с помощью mysql_escape_string( ) / mysql_real_escape_string(). Тогда данные в базе будут храниться именно в том виде, в котором их ввел пользователь.
Перед выводом в окно браузера обрабатывайте данные htmlspecialchars(), чтобы обезопасить сайт от XSS-инъекций. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 00:32)
| | Как мне кажется, это приходит с опытом. Я тут просматривал одну из своих первых работ, выполненную пять лет назад. Я хотел её использовать для сегодняшних нужд, но убедился, что проще написапть заново. Получилось в разы короче и намного быстрее. Хотя никаких специальных усилий для оптимизации кода я не прикладывал - просто появился некоторый навык. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 00:32)
| | опыт + желательно не отставать от жизни, побольше читать книг и побольше разбираться с чужим кодом. и еще неплохо бы работать в команде | |
|
|
|
|
|
|
|
для: psychomc
(05.09.2010 в 11:40)
| | книги я заказал на пол года вперед. 3 шт. в среднем 2 месяца на каждую. На подходе еще одно книга. Но это не гарантирует, что я научусь их писать идеально/ На счет разбора чужих, я так и буду делать, что бы развивать свой кругозор. На счет команды- не как не получится! Я неверное единственный WEB - программист в ближайщих районах! А те кто на ucoz те просто так че с них взять. А пособия есть какие нибудь? | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 12:30)
| | пособия для чего?
есть просто хорошие книги, которые учат грамотной алгоритмизации. можете например посмотреть "Совершенный код" Макконнела. здесь не суть важно какой язык, я думаю | |
|
|
|
|
|
|
|
для: psychomc
(05.09.2010 в 16:06)
| | Позвольте задать крамольный вопрос: а зачем нужно писать "правильно, надежно и без мусора"?
Как я понял, заказчиков абсолютно не интересует, как и какими методами создан их сайт. Им важно одно - чтобы сайт был таким, каким им его хочется видеть. И чтобы его создали быстрее. И чтобы это стоило дешевле.
А если так, то к чему все эти старания по улучшению кода? | |
|
|
|
|
|
|
|
для: Владимир55
(05.09.2010 в 18:52)
| | Это все равно как на машине ездить! Хватит лишь того, что ты научился трогаться и переключать передачи?! А правила? А реакция? А смышленость? Без этого же будет хуже. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 19:05)
| | Такая аналогия мне представляется неверной.
Езда на автомобиле у всех на виду и она затрагивает интересы других людей.
А код, в особенности серверный код, вообще никто не видит. Даже робот его не видит. И никого из потребителей он не интересует. | |
|
|
|
|
|
|
|
для: Владимир55
(05.09.2010 в 19:27)
| | Да, этот вопрос не на столько глобален как автомобили, но все же! Может я буду не для заказчиков делать, а так, на продажу, в потом в паблик. Другие программисты возможно будут копаться в моих скриптах. Или же тут приводился пример. Что открыв свой старейший скрипт сегодня, он не чего не понял и переписал его, и получилось в разы меньше кода. А это значит быстрота работы программиста и интепритатора увеличилась! | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 19:48)
| | Вам доводилось покупать скрипты? Если так, то Вы могли увидеть, какая там фигня! Не везде, конечно, но сплошь и рядом!
В своё время я приобретал их достаточно много. Так вот: по большей части они вообще не работали. Может, там и не было ошибок, но нужны были специальные настройки сервера, о которых авторы умалчивали. Или о которых сами не знали.
А кроме того, многие программисты специально запутываю коды в тех скриптах, которые продают или выставляют для бесплатного скачивания. Чтобы их было невозможно понять.
=====================
Не подумайте, что я агитирую за плохой код. В своё время я и сам тянулся к идеалу, пока не понял, что самое идеальное программирование - это когда все сделано быстро и работает исправно. За исключением высоконагруженного сервера. Но и тут, как правило, проще взять хостера помощнее. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 19:48)
| | "Чистый" код это не только удобство, а и приучения себя к порядку.
Аналогия - порядок в комнате. Например, вы - холостяк, вашу комнату не кто не увидит. Но это же не значит, что из нее нужно делать помойку.
Так же и с кодом. В нем тоже нужно периодически (или сразу) убираться.
Вот как-то так :). | |
|
|
|
|
|
|
|
для: lElectroHardl
(05.09.2010 в 20:09)
| | Вот я тоже такого мнения! | |
|
|
|
|
|
|
|
для: lElectroHardl
(05.09.2010 в 20:09)
| | И что, Вы будете лазить по уже готовому скрипту, менять там переменные, как-то модернизировать выражения и т.п.? При этом он непременно перестанет работать, ибо есть шанс что-то изменить неверно, и Вы вновь будете его настраивать? Ладно, если это простенький файл, а если это система, которую Вы настраивали дня три? И всё ради того, чтобы сэкономить несколько байт и какое-то количество операций, которые никто не заметит?
На мой взгляд, это похоже на мазохизм... | |
|
|
|
|
|
|
|
для: Владимир55
(05.09.2010 в 21:11)
| | >И что, Вы будете лазить по уже готовому скрипту, менять там переменные, как-то модернизировать выражения и т.п.?
--Зачем? Ведь скрипт идеален (ну почти).
>При этом он непременно перестанет работать, ибо есть шанс что-то изменить неверно.
--Чистый код будет расположен на нескольких строках или на многих, но структурировано. Т.е. если захочешь что-то изменить, это всегда легко найти и заменить на что-то другое без вреда для всей программы (скрипта).
>И всё ради того, чтобы сэкономить несколько байт и какое-то количество операций.
--"чистый код", "структурированость", "понятно где что находиться"... | |
|
|
|
|
|
|
|
для: Владимир55
(05.09.2010 в 18:52)
| | лично моё мнение таково.
да, заказчиков не интересует,но:
во-первых, если вы написали всё как надо и грамотно - это значит, что у вашего сайта "не отвалятся колеса" при наступлении какой-либо исключительной ситуации.
во-вторых, написанный грамотно код намного легче сопровождать. попросят у вас через годик-другой доработать сайт, написанный по принципу "абы написать", уверен, вам будет очень тяжело разобраться что к чему | |
|
|
|
|
|
|
|
для: psychomc
(05.09.2010 в 23:40)
| | Лично я ещё и не скуплюсь на комментарии. Хотя, кроме меня, их никто не прочтёт. Пусть крупными мазками, но есть смысл обозначить назначение отдельных фрагментов, начало и конец длинных циклов и т.п., а также указать, в состав какого скрипта входит данный файл и что он в нём делает.
Прежде в каждом файле я давал ещё и список переменных с их назначением, но от этого отошел. А вот список и структуру таблиц БД и сейчас пишу с указанием файлов, которые к каждой из таблиц обращаются. Если система сложная, то это очень помогает в настройке.
Считаю, что очень полезно после завершения работы набросать хотя бы краткое описание с указанием назначения системы, порядка инсталляции и настроек сервера. Полчаса потратишь, за то работа имеет законченный вид. | |
|
|
|
|
|
|
|
для: Владимир55
(06.09.2010 в 00:10)
| | такое чувство, что вы сами же опровергли свой пост (05.09.2010 в 18:52) :) | |
|
|
|
|
|
|
|
для: psychomc
(06.09.2010 в 10:25)
| | Едва ли. ТС писал про улучшение кода и освобождение его от мусора, так что это реакция на его вопрос. А культура производства - это несколько другое. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 00:32)
| | Написанный вами скрипт тщательно просмотреть.
Проанализировать каждый оператор (и каждую строку кода).
Понять, что лишнее (без чего можно обойтись, заменить).
Избавиться от лишнего 9заменить на более простое и компактное).
В будущем не нагружать скрипт ненужный (мусором).
+то, что говорили выше.
Это все сугубое ИМХО. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 00:32)
| | Сомневаться много не нужно перед написанием скрипта - вы все равно его не напишите лучше, чем умеете на текущий момент. Просто спроектируйте скрипт(или модуль) так, как вам кажется правильным и пишите.
Проектировать скрипт или модуль нужно обязательно! Если это модуль, то нужно записать его задачи тезисно, затем разбить на отдельные скрипты, далее обозначить задачу каждого скрипта, зарисовать блок-схему скрипта, если скрипт выводит что-либо в окно браузера, то нужно нарисовать шаблон видимой части. Если между скриптами в модуле существует связь, то эту связь тоже нужно зарисовать - допустим обработчик формы и сама форма - кто кому какие данные передает и каким способом.
Только после этого следует приступать к написанию кода, когда у вас есть вся документация под рукой. Документация подскажет вам что именно следует разрабатывать и как именно это должно работать. Документацию вы, если работаете один, составляете только для себя, поэтому можете просто зарисовать все карандашом, чтобы вам было понятно и на этом ограничиться. | |
|
|
|
|
|
|
|
для: Ирбис
(06.09.2010 в 11:31)
| | >Сомневаться много не нужно перед написанием скрипта - вы все равно его не напишите лучше, чем умеете на текущий момент. Просто спроектируйте скрипт(или модуль) так, как вам кажется правильным и пишите.
>
>Проектировать скрипт или модуль нужно обязательно! Если это модуль, то нужно записать его задачи тезисно, затем разбить на отдельные скрипты, далее обозначить задачу каждого скрипта, зарисовать блок-схему скрипта, если скрипт выводит что-либо в окно браузера, то нужно нарисовать шаблон видимой части. Если между скриптами в модуле существует связь, то эту связь тоже нужно зарисовать - допустим обработчик формы и сама форма - кто кому какие данные передает и каким способом.
>Только после этого следует приступать к написанию кода, когда у вас есть вся документация под рукой. Документация подскажет вам что именно следует разрабатывать и как именно это должно работать. Документацию вы, если работаете один, составляете только для себя, поэтому можете просто зарисовать все карандашом, чтобы вам было понятно и на этом ограничиться.
Да, это хороший совет! Скопирую это себе на рабочий стол! | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(05.09.2010 в 00:32)
| | Хочу сказать что с опытом код компактнее не становится. "Сферический код в вакууме" - возможно, а код, с которым придется жить дальше, обрастает заготовками для будущей модернизации. Все грабли на которые наступал за свою практику находят отражение в создаваемом коде. Код обрастает дополнительными классами, а потом и сам заворачивается в класс, а потом начинается борьба за несвязанность этих классов, а потом рефакторинг, попытки делать самокомментируемый код... В общем о компактности можете забыть. Только если компактность - изначальная задача. | |
|
|
|
|
|
|
|
для: Loki
(08.09.2010 в 14:52)
| | Я даже задумался - "неужели тебе настолько не повезло?". Рассказал, как свою историю.
А вообще, если делать все с умом, то таких проблем, как вы описали, возникнуть не должно.
Ладно, они возникли! но из-за, опять таки, "чистоты" кода, эту неисправность будет легко устранить. | |
|
|
|
|
|
|
|
для: lElectroHardl
(08.09.2010 в 18:59)
| | Каких проблем? Я вроде ни о каких проблемах не писал. Я писал что масштабируемый и легко сопровождаемый код компактным не будет. | |
|
|
|
|
|
|
|
для: lElectroHardl
(08.09.2010 в 18:59)
| | >А вообще, если делать все с умом, то таких проблем, как вы описали, возникнуть не должно.
Боже праведный... да вы на свой код посмотрите, вы простые то вещи написать не можете, хотелось бы надеяться, что пока... | |
|
|
|
|
|
|
|
для: sim5
(09.09.2010 в 11:23)
| | >Боже праведный... да вы на свой код посмотрите, вы простые то вещи написать не можете, хотелось бы надеяться, что пока...
Заинтриговали... посмотрел последние темы... "и эти люди запрещают мне ковыряться в носу":) | |
|
|
|
|
|
|
|
для: Loki
(09.09.2010 в 12:03)
| | :)) | |
|
|
|
|
|
|
|
для: Loki
(09.09.2010 в 12:03)
| | Я и не говорю, что я батько PHP. Я высказал свое мнение. Что с компактным и структурированным кодом легче работать. | |
|
|
|
|
|
|
|
для: lElectroHardl
(09.09.2010 в 17:44)
| | а если задача объемная и сложная? | |
|
|
|
|
|
|
|
для: lElectroHardl
(09.09.2010 в 17:44)
| | Ну это Вы фигню сказали. В качестве пищи для размышления скажу что обфусцированный код очень компактный... и его даже можно оставить структурированным. | |
|
|
|