|
Флудильня Разговоры на любые темы. Мы устаем постоянно работать. Иногда надо где-то немного отдохнуть. Пожалуйста, не надо здесь устраивать бардак. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
02.11.2011, 19:51 | #1 |
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
холивар из АСР...
я же вам писал, всё завист от настройки сервера.
включите Код:
register_globals = On panel.php?r_ip=1&modules['login'][0]=/etc/passwd $r_ip - будет равно 1 $modules['login'][0] - будет равно /etc/passwd ну то есть любой файл можно подставить, но всё зависит от системы, от её настройки, от прав под которыми запущены демоны... если на виндовсе сервер то права не нужны даже) |
02.11.2011, 20:33 | #2 | |
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
освежил знания по пхп. Да есть такое. Но .htaccess еще никто не отменял.
Думаю, что тогда продолжать проект не имеет никакого смысла... Надо писать новый. Цитата:
|
|
02.11.2011, 22:33 | #3 |
Пользователь
Регистрация: 27.03.2010
Сообщений: 80
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 13 сообщениях
|
Проект умер тогда, когда свет увидел php5...
Все попытки Кота его поддерживать - ничто иное, как реанимация. Освежит знания в работе с новыми возможностями php и, возможно, практикуясь, сделает личный кабинет. |
03.11.2011, 09:57 | #4 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
Мне кажется, что использование глобальных переменных в любом случае не есть гуд?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
03.11.2011, 10:15 | #5 |
Пользователь
Регистрация: 27.03.2010
Сообщений: 80
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 13 сообщениях
|
tempura, отчего же?
Без них, зачастую, никак не обойтись. И не важно, что вы будете там хранить. Тот же паттерн проектирования Singleton по сути - глобальная переменная (если грубо говоря). Конечно, использовать их надо с умом, а не просто "что б было" |
03.11.2011, 10:20 | #6 | |
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
Цитата:
по идее и процедурное программирование - вчерашний день, но на ООП этот проект уже не перевести. Проще написать с нуля. |
|
03.11.2011, 10:28 | #7 |
Пользователь
Регистрация: 27.03.2010
Сообщений: 80
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 13 сообщениях
|
Кот ДаWINчи, в ООП/MVC с глобальными переменными будете видиться ещё чаще
Быть может не в таком контексте, а в виде регистра, но сути не меняет Последний раз редактировалось Праведник; 03.11.2011 в 10:32. |
03.11.2011, 20:03 | #8 | |
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Синглтон просто используют чаще всего не по назначению. Основная задача - это что бы был один экземпляр какого либо объекта. А его юзают что бы просто глобальным сделать объект.
Перенести этот проект на ООП естественно смысла нет, лучше писать с нуля. Цитата:
вот тут в коде что? PHP код:
когда вы юзаете Core::model()->db->row или просто $row где больше шансов что переменная может быть перетёрта особенно если проект делает не один человек? Но есть и страшнее последствия процедурного программирования. Предположим что файл инклудится и в родительском файле объявляется переменная (как раз случай с этого сайта). процедурный стиль PHP код:
а в ООП будет что то типа PHP код:
как правило, только в index.php будет вызов что то типа i PHP код:
Я не утверждаю что ООП - значит без дыр Это далеко не так, остаются в любом случае передаваемые параметры GET и POST которые просто как правило обрабатываются и проверяются в одном месте при получении, это удобней. |
|
03.11.2011, 20:15 | #9 |
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
Ну вот из хорошей темы сделали офтоп.
все посты с 256-го надо или в флудилку, или в корзину. Последний раз редактировалось Кот ДаWINчи; 03.11.2011 в 20:20. |
03.11.2011, 20:20 | #10 | |||
Пользователь
Регистрация: 27.03.2010
Сообщений: 80
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 13 сообщениях
|
Цитата:
Он просто идёт первым в книжках о паттернах проектирования) П.с. на работе достался в наследство большой проект на зенде, в нём нет ни одного полноценного класса, одни синглтоны ((21 штука)разумеется, сам зенд не трогаю (п.с. имеется в виду вся бизнесс-логика)). Можете себе представить такой расклад?) Цитата:
Цитата:
Используйте нормальные IDE (нетбинс, эклипс, пхпшторм) Всё остальное из той же оперы. Бред сумасшедшего. p.s. пример ооп улыбнул. Autoloader/Неймспейсы - наше всё. Живите в 21 веке, а не в 19. Последний раз редактировалось Праведник; 03.11.2011 в 21:55. |
|||
03.11.2011, 20:55 | #11 |
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
При чём тут вообще IDE ? я про ошибки программистов.
пример ООП это просто пример, это не реальный код. уж поверьте я давно в 21 веке живу и не понимаю каким боком тут неймспейс и автолоад привязался к дырам с глобальными переменными? |
03.11.2011, 21:04 | #12 | ||
Пользователь
Регистрация: 27.03.2010
Сообщений: 80
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 13 сообщениях
|
Цитата:
Любая более или менее серьёзная среда разработки моментально ткнёт носом, если программист (не школьник с вовжопы), что-то упустил (например, утренний кофе прошёл мимо него) Цитата:
p.s. за сим откланяюсь. Хотите продолжить полемику - в личку. Тему загаживать не будем. p.p.s регистер глобалс давно деприкейтед... но это ведь никого не волнует, не правда ли?) |
||
04.11.2011, 20:58 | #13 | |
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
Цитата:
|
|
05.11.2011, 04:24 | #14 |
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Ну во первых, простейший класс, это просто перекрыть функции, что бы можно было сменить потом функции обращения к бд.
что то типа Код:
class DB { function q($sql) { return mysql_query($sql); } ... А какая проблема с возвращением массива не понял? Массив прекрасно возвращается из функции. Ещё совет - использовать для указания параметров функции, а не формировать sql запрос самому подставляя значения напрямую в строку. http://www.php.net/manual/ru/mysqli-stmt.bind-param.php http://www.php.net/manual/ru/pdostatement.bindvalue.php http://www.php.net/manual/ru/mysqli-stmt.bind-param.php Это поможет защититься от sql инъекций. А ещё лучше, юзайте фреймворк для написания сайта Например Yii. Очень лёгок в изучении, и сайт на нём работает быстрей чем например на Zend. Но юзая фреймворк вы теряете главное, опыт в кодинге на самом php Ну, если вы будите смотреть сорцы фреймворка, как он устроен, и разбираться почему так... то это тоже хорошо для обучения. Или переходи на Python Мне больше понравился чем пхп. В России мало почему то распространён, но набирает обороты. Всё чаще требуются на работу программисты Python. |
05.11.2011, 06:33 | #15 | |
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
Цитата:
Задача у нас такая: "загнать все манипуляции с базой данных в класс. Обращение к функциям конкретной базы данных ВНЕ класса запрещены, т.к. замена файла-класса на другой должна приводить к смене базы данных БЕЗ корректировки остального кода движка". Исходя из этой нашей задачи, смотрим на ваш код выше: 1. ваша ф-ция $DB->q('select * from table'); вернет нам некий массив данных. Обычно этот массив необходимо разобрать(обработать) другими ф-циями. Для MySQL это обычно mysql_fetch_assoc(), НО мы же ведь написали в задаче, что не имеем возможности использовать ф-ции конкретной базы данных вне класса. 2. если мы засунем mysql_fetch_assoc() в функцию , то нам придется обрабатывать и возвращать 2 массива и 2 переменных: количество полей и записей, названия полей, сами данные. а потом уже в коде скрипта опять разбирать полученные данные. а это очень громоздко, мутарно и медленно. (о чем я и писал в своем посте выше). В общем такая игра не стоит свеч. |
|
05.11.2011, 08:07 | #16 | ||
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Эм.... как бэ, при чём тут мануал, вы не можете написать класс для работы с бд, я вам советую для начала попробовать написать простейший класс, PDO и так хороший класс, а обёртка нужна что бы легко было перейти от mysqli к PDO и наоборот, ну и от mysql_*, можно просто использовать класс обёртку.
Я не говорю не о каких деталях, когда я делал лк, я вникал в детали, потому что я его делал, а этот сайт я не делаю, я просто предлагаю варианты направлений, а вы, в зависимости от ваших знаний и желания - выбирайте путь. Цитата:
Цитата:
сделайте просто функции типа fetch(), first(), next(), all() да какие угодно внутри класса, а потом юзайте Код:
foreach ($db->all as $row) Код:
while ($row = $db->getRow()) |
||
05.11.2011, 08:17 | #17 | |
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
Цитата:
Сегодня предприму попытку №2... |
|
05.11.2011, 08:35 | #18 | |
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Ну смотрим http://www.php.net/manual/en/mysqli.query.php
Цитата:
хоть возвращайте этот же результат, хоть сохраняйте внутри в переменной. вот самый простейший пример Код:
class DB { $res; function q($sql) { $res = $mysqli->query($sql); } function assoc() { return $res->fetch_assoc(); } } |
|
05.11.2011, 10:24 | #19 |
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
и опять теория подкрепленная непроверенным примером из мануала, и не более того.
1. Замечу что ваш код не работоспособен, т.к. $res в 3, 7, 12 строках этого "примера" не есть одно и тоже. Как минимум в 2-х последних строках добавляем "this->". 2. $mysqli->query($sql) тоже без "this->" работать не будет. и $mysqli тоже заранее объявить как переменную класса. 3. $res; лучше сделать private. Если вы пытаетесь меня убедить что я дурак, то не выйдет. Я не программист, а ПХП - это просто хобби. Причем, я сперва проверяю в работе, а потом открываю варежку. и мне глубоко фиолетово мнение других про мой говнокод. Я просто пишу как могу. (а ваших "плодов" я пока не видел) |
05.11.2011, 12:51 | #20 | ||
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Цитата:
на ооп я перешел примерно 7-8 лет назад, я просто ещё не доучил что есть такое понятие как приват я ещё раз повторю, это просто направление, это не как не примеры реального кода. Цитата:
вообщем делай как считаешь нужным, я не вмешиваюсь |
||
05.11.2011, 13:40 | #21 | |||
Пользователь
Регистрация: 27.03.2010
Сообщений: 80
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 13 сообщениях
|
Цитата:
Цитата:
Цитата:
|
|||
05.11.2011, 18:58 | #22 | ||||
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Цитата:
Цитата:
Это как бэ здравый смысл. Цитата:
Прошу обратить внимание на свои же слова: Цитата:
|
||||
05.11.2011, 19:15 | #23 |
Гость
Сообщений: n/a
|
совет по делу.
Взять лопату и зарыть проект( перестать поддерживать ), и не пытаться оживить франкенштейна. И начать ЛК3 ООП + зы все же на гит стоит выложить, хоть под левым аккаунтом. |
05.11.2011, 19:36 | #24 | |||
Пользователь
Регистрация: 27.03.2010
Сообщений: 80
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 13 сообщениях
|
Цитата:
Цитата:
А так же не дружит с поддержкой мультизапросов. Везкая причина на него переехать. Цитата:
Использовать фреймворки для проектов такого размера - кощунственно, неправильно и вообще идиотизм. Исключение - тренировка работы с этим фреймворком. Последний раз редактировалось Праведник; 05.11.2011 в 19:44. |
|||
05.11.2011, 19:45 | #25 |
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
что и делается потихоньку. Только выкладывать альфу никуда не буду. К тому же у меня поменялось мнение на счет самого термина "ЛИЧНЫЙ КАБИНЕТ". Точнее, я теперь приверженец его отсутствия. т.е. есть веб-портал сервера на котором надо регистрироваться под своим аккаунтом, и в зависимости от прав доступа аккаунта, пользователь получает в своё распоряжение тот или иной функционал сайта. Другими словами - сам движок и есть ЛК с расширенными возможностями. Весь придуманный функционал для такого "движка" раскрывать не буду, а придумано уже много. Только садись и делай.
|
05.11.2011, 20:27 | #26 |
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Minimajack, а разве не это хотел сделать Кот ДаWINчи?)
Праведник, отвечу вам вашими же словами: потому что рассматривать mysqli и pdo нужно не с одной стороны, то есть не так как вам удобно, а вообще рассматривая все возможности. |
05.11.2011, 22:24 | #27 |
Пользователь
Регистрация: 27.03.2010
Сообщений: 80
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 13 сообщениях
|
Я и рассмотрел все возможности и выделил недостатки PDO.
MySQLi этих недостатков не имеет. Ровно как и PDO не имеет ни одного преимущества над MySQLi. я вобще предполагаю, что у вас нет ни одного проекта, где бы использовались фреймворки, как таковые. Раз вы не знаете банальных отличий различных драйверов. А уж тем более заявляя про сроки в час... К нам на фирму на днях пришёл товарищ. Вот его резюме: http://narod.ru/disk/30450453001/IMG_0739.JPG.html http://narod.ru/disk/30450618001/IMG_0740.JPG.html Он тоже, как и вы - знал всё А на деле... Стоит ли говорить, что весь офис был в истерике после собеседования с оным? |
05.11.2011, 22:48 | #28 | |||||
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
зато вы хороший троль) наверное пользуетесь авторитетом на вов жп |
|||||
05.11.2011, 22:51 | #29 |
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Кстати, у меня знакомый по университету, работает в одном крупном гос учреждении и он решает кого взять помощником, он там программист, но он сам программирование не знает, так, виндовс может переустановить, я думаю нормальный программист у него собеседование тоже не прошел бы
надеюсь он не из вашей фирмы |
05.11.2011, 23:05 | #30 |
Пользователь
Регистрация: 27.03.2010
Сообщений: 80
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 13 сообщениях
|
Предупреждал же меня Кот, что бы не впрягался в дебаты с троллями...
В общем ясно всё тут. п.с. по вашим примерам и знания ваши оценили. И не надо оправданий про "я не старался, так вышло". Флудите на ТК, тролльте на румангосе и будет щасце) Последний раз редактировалось Праведник; 05.11.2011 в 23:08. |
05.11.2011, 23:53 | #31 | ||
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Цитата:
-люди или прогеры или кретины -разговор про дыры в лк, вы приплели автолоад -разговор о расширении пдо против мускли вы про драйвер мускл -я пишу это не код а направление, вы пишите "я не старался, так вышло" и я после этого троль вы всё сверх на голову перевернули Цитата:
|
||
06.11.2011, 01:32 | #32 |
Пользователь
Регистрация: 27.03.2010
Сообщений: 80
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 13 сообщениях
|
Читать по диагонали нынче модно.
Так все поступают, когда решают слиться. Продолжайте дальше. Вас ждёт успех |
06.11.2011, 01:55 | #33 | |
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Цитата:
|
|