![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Не актуальная информация
Это сообщение отредактировал(а) Muerto - 6.9.2010, 00:25 |
|||
|
||||
| SoWa |
|
||||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Я бы это вписал в __construct Мне не очевидно совсем... Если у тебя есть метод init & open_conn, то где они вызываются в примере?
Если это нужно для статистики - то оставь. А если фишка без значимого применения - то зачем? Это сообщение отредактировал(а) SoWa - 20.8.2010, 16:44 -------------------- Всем добра |
||||
|
|||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Если у тебя есть метод init & open_conn, то где они вызываются в примере?
Что бы не писать когда я использую этот класс лишний код, do_query($thequery) делает init() и open_conn() если не открыто подключения А фишка для подсчета подключений и запросов, это больше для проверки эффективности кода чтоли... в целях оптимизации скрипта Это сообщение отредактировал(а) Muerto - 20.8.2010, 16:58 |
|||
|
||||
| Muerto |
|
||||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Решил попытаться создать функции которые будут работать с mysqli->prepare
Пока что очень много сложностей... есть функция
которая возвращает мне
к примеру $query= $myconn->prepare_query("select * from test where id = ?"); Далее нужно делать $query->bind_param('i', $id); и $query->execute(); В чем проблема: Во первым, по вашему дальше стоит сделать две функции или одну? в любом случае, как мне построить функцию которая будет выполнять
и ещё одну или в той же которая будет делать
главная проблема в том что сейчас bind_param('i', $id); содержит только $id, но если строить глобальную функци, она должна получать любое количество значения... т.е. создаем функцию
Но как же мне массив с $values впихнуть в bind_param('i', $id); там ведь между каждым символом нужна запятая... explode ',' что ли... в общем хэлп! |
||||||||||
|
|||||||||||
| Muerto |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Или более простым языком,
работает
Но глобально написать я не знаю как, за место 's' может быть 'sdsssssss' и за место 'hi' может быть массив с данными... Как же выполнить
Это сообщение отредактировал(а) Muerto - 20.8.2010, 23:37 |
||||
|
|||||
| Muerto |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Вот в общем, может кому пригодиться...
самая главная проблема теперь за место
вернуть $thequery, и делать простой fetch_assoc к примеру |
||||
|
|||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Бред такой бред.
Вы спрашиваете какую бы функцию добавить в класс, который будет использоваться в вашем коде, для ваших, никому не известных, задач. Где хоть какой то смысл? Это сообщение отредактировал(а) gta4kv - 22.8.2010, 19:29 |
|||
|
||||
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Такой тип задачь нужен только тогда вы пишете свою цмс и хотите сделать много движковый класс бд брехня конечно в основном но везде разные ситуации бывают.
М имхо легче написать обертку на каждый класс по классу и в зависимости от настроек юзать его. хотя обычного mysql и mysqli достаточно. Даже если на хотинге нет этого mysqli это плохой хостинг и уже не твоя проблема что его нет. Уже давным давно забил на тех укого нет mysqli. -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
| Photon |
|
|||
|
Злобный программер ![]() ![]() Профиль Группа: Участник Сообщений: 282 Регистрация: 27.2.2009 Где: Таганрог Репутация: 10 Всего: 12 |
-------------------- With best regards.. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Доделал наконец то класс, вывожу результат вывода статического метода help
Functions list of db_con class static function getInstance(); Create Singleton of the class private function __construct(); Set's cache directory(place), and the cache extensions for file and variables cache private function __clone(); Prevent object cloning public function init_conn($db_uname,$db_pass,$db_name,$db_host='localhost',$db_cs='utf8',$special_escape ='x@x'); Initiates the connection variables public function open_conn(); Open the connection public function close_conn(); Kills and then closes the connection public function get_sp_esc(); Get the CS from the class public function set_sp_esc($value); Sets the SC to the class public function escape($thequery); Escapes before do the query, using the special escape symbol you decide to use public function do_query($thequery,$escape=0); Do specified query, if escape is 1, it will use the escape function to do mysqli_real_escape public function reset_bind(); Reset the types and params containers public function var_bind(&$type,&$param); Prepare the types and parameters, accepting varsiables one by one, adding them to array for func bind_params public function ar_bind(&$type,&$param); Prepare the types and parameters, accepting array public function do_prepare($thequery); Prepare the statement using ->prepare(); public function bind_params(); Bind the parameters with the function bind_param, before you use it, use ar_bin or var_bind functions, and of course after do_prepare public function execute(); Executes the prepared statement with the binded parameters if there is... public static function fetch_it($theresult,$type); Fetch the result of a query, $type can be 'assoc', 'object', 'row', 'array' . public function fetch_result($theresult); Fetch the result with assoc method, for development purposes! Usage Examples: 1. DEFINE('SC','x@x'); $db=db_con::getInstance(); $db->init_conn('root','lqsym','db1','localhost','utf8',SC); $data=$db->do_query("INSERT INTO test (message) VALUES('".SC."".str_shuffle("abcdefghijklmnopqrstuvwxyz0123456789")."".SC."')",1); $db->close_conn(); echo $db->reqs_num; 2.$db=db_con::getInstance(); $db->init_conn('root','lqsym','db1'); $db->do_prepare("INSERT INTO test (message,message2,message3,message4) VALUES(?,?,?,?)"); $db->reset_bind(); $types=array('s','s','s'); $vars=array('message1','message2','message3'); $db->ar_bind($types,$vars); $onemore_t='s'; $onemore_v='cool'; $db->var_bind($onemore_t,$onemore_v); $db->bind_params(); $db->execute(); $db->close_conn(); Это сообщение отредактировал(а) Muerto - 6.9.2010, 00:32 |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
а ООП в коде так и не пахнет
|
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
gta4kv, Наверно нет.
Но что вам там пахнет а что нет, мне говорит очень мало Можно даже ткнуть на что то отсюда http://www.phpclasses.org/browse/class/10.html А вот полноценная система для студентов которая на моем классе работает http://learn-php.ru/m_shaot/?shared=1 + класc Benchmark результат которого можно увидеть в самом низу... Это сообщение отредактировал(а) Muerto - 6.9.2010, 00:15 |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
И нафига это все?
|
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
SneG0K, Эти функции нужны для того что бы поднимать сайты за 5 секунд и не работать каждый раз с нуля
в конце ээто будет MVC фреймворк на котором я мои проекты лепить буду Это сообщение отредактировал(а) Muerto - 6.9.2010, 00:33 |
|||
|
||||
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
ну чисто для себя не плохо.
-------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
||||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Muerto, Иуууу, Энджи! А зайти на PEAR или стянуть класс работы с бд допустим из Zend Framework, не?
enoff, В разделе "Книги" попросил книгу, уже две недели никто не отвечает. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
enoff, Понимайте , я встречал таких которые говорят, это да ООП , это не ООП.
А что же есть ООП? Как правило когда мы говорим об ООП мы хотим, и это только мое ИМХО и насколько я понимаю то что делаю: 1. Мы хотим построить то чем сможем пользоваться много раз, и оно сэкономит нам время 2. хотим построить то что можно будет расширять и изменять... (например если я захочу вдруг работать с mysql а не mysqli , мне код менять не нужно целиком на ВСЕХ моих страницах, а только в моем классе!!! или же если мне вдруг ОО стиль mysqli не по душе более(а именно его использует мой класс)... Но здесь конечно кто то может сказать что и тупой набор функций сможет сделать эту работу... возможно и так! 3. Инкапсюляция - однозначно есть! 4. Наследования здесь как бы нету НО, есть один большой плюс, и это мой оригинальный autoloader, я классы вызываю вот так
И он его уже и заинклюдит и singleton вернет (может кто помнит прикол с PAAMAYIM NEKUDOTAYIM...) 5. Наследия у меня нету в данном классе, хотя теоретически можно было бы singleton вывести из классов... и полиморфизма здесь нету Добавлено @ 09:52 SneG0K, Стянуть всегда все можно, а нужно ли? Это сообщение отредактировал(а) Muerto - 6.9.2010, 10:09 |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Велосипед из Zend'a с мягким сидением и спинкой, у вашего же велосипеда нет сидения (торчит труба).
Вопрос: на каком велосипеде ездить приятней? Ну, если вы девушка или не той ориентации, то тогда вопрос отпадает. В качестве учебного примера можно и написать такой класс, но не пользоваться им. Видите-ли, все уже придумали до нас. Добавлено через 42 секунды Добавлено через 3 минуты и 45 секунд
Это вернет только ошибку. Добавлено через 3 минуты и 57 секунд Ох, какой я придирчивый. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
SneG0K, Имелось ввиду объекто-орентированый стиль работы с mysqli , это очепятка
А это вернет ошибку только у вас!
Потому что вы не разработали функцию cload |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
SneG0K, Наслаждайтесь http://learn-php.ru/m_shaot/ так же снизу можете увидеть насколько быстро мой мини фреймворк пашет
А патом ваш ZEND запустите, и дайте знать как быстро сгенерируется аналог того что я вам выдал, да нет, вы просто hello world сделайте Это сообщение отредактировал(а) Muerto - 6.9.2010, 10:18 |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
mysqli как раз предоставляет объектно-ориентированный интерфейс.
в каждом вашем сообщении можно наблюдать полную уверенность в своей оригинальности и неповторимости Гради Буч. Объектно-ориентированный анализ и проектирование. http://www.helloworld.ru/texts/comp/other/oop/index.htm Добавлено через 4 минуты и 49 секунд Muerto, А насколько ваш фреймворк помог в разработке? а зачем на зенде хеллоу ворд делать? Вы сравните скорость разработки какой-нибудь большой системы на зенде и с вашим фреймворком. |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
SneG0K, И что вы этим получили по вашему
Кто кого умней? Вы бы хоть переводчик посмотрели, там у меня и логин и регистрация в одном месте, если вы не зарегины вас зарегит, а если зарегины, вас просто впустит =-) Если логин существует а пароль левый, вас не впустит! Вы не понимайте всю прелесть do_query("insert....",1); + функцию escape Это сообщение отредактировал(а) Muerto - 6.9.2010, 10:32 |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
||||
|
||||
| Muerto |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
enoff, Да можете играться сколько хотите, когда получаем $_POST
идет фильтровка самая базовая через htmlspecialchars которая в общем не является защитой от иньекций, затем функция escape берет каждую ячейкую которую я засунул между волшебными символами, и фильтрует её через mysqli_real_escape Что бы облегчить вам взлом, добавление пользователя выглядит вот так:
Перед этим идет поиск пользователя
Или же вы думайте что разработчики php полные придурки, и нифига не понимают в OOP , и придумали никому не нужную функцию mysqli_real_escape? НИФИГА ВЫ НЕ ВЗЛОМАЛИ КАК ВЫ ПОНЯТЬ НЕ МОЖЕТЕ!!! Это сообщение отредактировал(а) Muerto - 6.9.2010, 10:38 |
||||
|
|||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
читаем ниже
Это сообщение отредактировал(а) Muerto - 6.9.2010, 10:48 |
|||
|
||||
| SneG0K |
|
||||||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Что вы за ахинею придумали? Класс БД должен защищаться от SQL иньекций, функции работы с таблицей должны отталкиваться от класса БД и защищать только от XSS ЧТо это еще за ахинея, когда все делается в одном месте? Каждый компонент должен заниматься своим делом и защищать себя сам. Добавлено через 1 минуту и 1 секунду
Это я и без тебя понял.
Начинай, а я послушаю. Добавлено через 1 минуту и 33 секунды Muerto, ты небось выходец и хакзоны или хакер.ру ? |
||||||
|
|||||||
| Muerto |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
SneG0K, Ну блин сколько же вам писать, что вас никуда таким запросом не впустило?
или вам по пальцам продолжать объяснять? Я вам сам урок могу дать по SQL-injection , вы здесь никого ничем не удевили Я вам объясню, так как вы не понимайте что оно вам там пишет Вы сделали следующее 1. в логин вы впихнули ' or 1=1/* Пароль 123 2. Скрипт сделал $login=htmlspecialchars($_POST['login']); (Но может этого и не делать, это значения НЕ ИМЕЕТ)
Он не нашел ваш логин, и затем он сделал
т.е. он зарегил вас! Затем впустил в систему... Типер вы можетей зайти на /?logout И попытаться ввести ' or 1=1/* Пароль 12 Вам выдаст ошибку что ваш пароль не верный... если введете ' or 1=1/* Пароль 123 вы просто войдете в ВАШ аккаунт Это сообщение отредактировал(а) Muerto - 6.9.2010, 10:49 |
||||
|
|||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Дайте уже ребенку писать велосипеды. Читаю товарища уже не первый день, это более чем забавно. Впрочем с опытом пройдет. Многие в страдали юношеским максимализмом, велосипедописанием, уверенностью в том что делают лучше чем тысячи разработчиков по всему миру. Это проходит... Добавлено через 1 минуту и 43 секунды Когда / Если товарищ Muerto на нормальную работу, с постоянным code review и прочими радостями коммандной разработки, его быстро отучат писать велосипеды и думать что умней других и многих. |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Надо открывать ленты на винграде посвященные тем или иным лицам)
|
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Вы пишите:
Что вы за ахинею придумали? Класс БД должен защищаться от SQL иньекций, функции работы с таблицей должны отталкиваться от класса БД И на какой основе вы это пишите? Класс BD ничего кроме mysqli_real_escape не использует и не знает Я ему ставлю метки, где нужно отфильтровать, и он это делает через mysqli_real_escape а
это часть скрипта , нужно от XSS вообще то, что бы мне скрипты не повставляли но на BD не влияет никак кстати стоит помнить что на данный момент здесь НЕ MVC хоть и есть некий "контроллер" Добавлено @ 10:58 cutwater, А я ничего не думаю, я написал класс исключительно для себя, он выполняет свои цели отлично. Здесь вообще пол темы флуда... Ну вы говорите велосипеды, и уже все есть? так какого вы тут все делайте? идите качайте ZEND или YII и будет вам счастье, ещё есть сайт как http://www.phpclasses.org/ там вы ещё и классов накачайте, готовых. И потом вы себя программистами назовете, и скажите что знайте что такое OOP ? А я буду в сторонке смотреть на эту и жалеть вас. Это сообщение отредактировал(а) Muerto - 6.9.2010, 11:00 |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
Muerto, от XSS то нужно, только правильнее будет в другом месте это делать, а не перед добавлением в базу.
|
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
| Muerto |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
enoff, Вы однозначно правы,
"принято" сохранять информацию в "чистом виде" , т.е. именно фильтровка mysqli_real_escape а затем уже при выводе инфы, запускать разные фильтровки... к примеру тот же htmlspecialchars нужно это от XSS К примеру в комментариях к новостям иногда можно впихнуть
Или
Зависит как там у них вывод инфы идет, и это выкинет сообщение Такие сайты вообще для поднятия ТИЦ и PR использовать можно, вставляя ссылки на свой сайт... Почему же здесь я фильтрую перед тем как впихиваю в базу? Ну собственно, потому что в данном случае оно для меня совершенно не имеет значения |
||||
|
|||||
| cutwater |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
За защиту от XSS должен отвечать уровень представления / view но никак не обработки данных. Ибо работать необходимо, удобно и правильно с raw данными. Но Вы же не считаетесь с чужими мнениями более опытных людей. P.S. именно поэтому столько матерились в сторону всяких magic quotes и прочих плюшек, якобы облегчающих жизнь. Добавлено через 1 минуту и 12 секунд
Это Вы сейчас так говорите, пока не столкнетесь с проблемами. И будет лишнего кода, заплатка на заплатке и заплаткой погоняет. Добавлено через 1 минуту и 52 секунды P. P. S. Как я уже говорил, бесполезно спорить с человеком, который слышет только себя. |
||||
|
|||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
cutwater, Это не MVC , и этот проект мелкий и нужен только не многим студентам, я в него мысль не вкладывал, хотя конечно возможно стоит сразу как бы всегда верным путем следовать
А что бы здесь не говорили что я пусто слов, вот вам за 15 секунд использование XSS на сайте который по гуглю нашел Сюрприз для хакеров вроде SneG0K http://www.autobaza.ru/search.php?k=%22%3E...uerto%3C%2Fa%3E Это сообщение отредактировал(а) Muerto - 6.9.2010, 11:17 |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Да Вы, какой вы опытный! Вы дилетант! Вы даже Hello World и использованием фреймворков не писали! И Enoff дилетант! И я! Мы все жалкие дилетанты! И вообще мы нифига не шарим! Класс работы с бд не должен быть удобным, он должен быть уникальным и плевать, что не удобным. Это сообщение отредактировал(а) SneG0K - 6.9.2010, 11:22 |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
cutwater, тут много раз вопрошали, зачем все эти велосипеды, но внятного ответа так и не было...
Muerto, зачем что-то городить, когда mysql_real_escape_string + intval защитит от инъекций, а htmlspecialchars от xss? Лишние телодвижения здесь нет никакого оправдания... |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Ну у меня оно так и есть, только порядок иной... Хотя в том что я вам описал явно не хватает пару вещей и это к примеру какой нибудь валидатор которые будет смотреть на паттерны... И говорить если пароль соответствует политике сайта, а так же логин... |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
SneG0K, только его вспоминал
Muerto, можно и админам написать, а не показывать свою крутость. К тому же некоторые ща налетят и будут мучать этот сайт. |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Просто в восторге от сайтов которые допускают в паролях только a-z 0-9 _ -, не допускают пробелы и спецсимволы. И обязательно требуют наличия цифр и символов разных регистров. |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
Это прекрасно работает и без дополнительных вещей. Время не экономит, код становится непонятнее...
|
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
enoff, Вы в гугле поиск сделайте, http://www.autobaza.ru/search.php и поймете что я здесь никому ничего не обновил, может только открыл нечто новое для тех кто не знаком с XSS , и что через него можно поднять ТИЦ
SneG0K, Ну в нижний регистр это уже ужас, я так на своих проектах никогда не делаю Но не люблю когда в логине на форуме есть симфолы вроде #!@%^ нафиг такое разрещать? у нас тут че демократия? Программирование это диктатура, и диктатор здесь я © |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Напомните мне, когда это мы говорили про логин? Добавлено через 29 секунд Так это еще и не ты нашел Добавлено через 1 минуту и 15 секунд Через него не только ТИЦ поднимают. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Давайте как то ближе к теме!
Значит судя по вашим словам, свои классы писать смысла нету, если можно найти готовое в гугле? |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Смысл только ради обучения! Zend_Db представляет функционал намного удобней, чем ваш этот. Есть еще смысл, когда заказчик требует полностью без использования левых компонентов, но в таких случаях я тоже ориентируюсь на уже готовые решения. |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Кривые и велосипедные именно. Когда то что вы делаете реализовано по человечески при помощи mysqli, PDO, yet another Wpapper / ORM. Когда prepared statements реализованы на уровне движка БД и таки имеют смысл и оптимизируют одинаковые запросы с различиями в параметрах, в отличие от Вашего велосипеда, который кроме того же еще и имеет не очевидный дизайн и кроме вас никому не нужен. |
|||
|
||||
| Muerto |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
cutwater, Ну если мы оставим таких гигантов как ZEND где вы толком один файл который у него там за работу с базой и не найдете, ну по крайней мере я не нашел...
Мой класс работает с базой данных через mysqli использует ооп модход работы с mysqli Он облегчает процесс фильтровки данных функцией mysqli_real_escape путем do_query + escape Он умеет подготавливать выражения, причем не нужно сразу указывать
А можно делать нечто
Но ведь мы хотим (?,?,?,? и это то что мы заготовили, а добавил я только один, как оно работать будет? Дальеш можно по одному, а можно просто список дать
И затем $db->ar_bind($types,$params) $db->bind_params(); мы закрываем этот процесс, и это сделает нам bind_param со всеми нашими параметрами если мы изменем $types,$params то изменим и параметры, как если бы мы делали это в ручную И дальше тупо $db->execute(); |
||||||
|
|||||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
||||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
cutwater, Судя по вашему сообщению, вы думайте что я изобретаю mysqli?
нет! Я всего лишь использую mysqli через мой класс, я ничего особого не изобритаю, кроме как решение самых обычных и распостраненых задач что и видно с описания класса и его функций он может работать как с mysqli так и с PDO или с mysql Я думаю и с текстовым файлом тоже можно... смысл в том что я всегда смогу сменить Это сообщение отредактировал(а) Muerto - 6.9.2010, 11:58 |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
действительно
И часто вы так запросы составляете, как постом выше? |
|||
|
||||
| Muerto |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Ну а кто против? так конечно же можно делать, и возможно нужно иногда Но если вы строите класс, то вам нужно как то обобщить эти случая а что если мне нужно завтра не два параметра а 30? |
||||
|
|||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
Muerto, и в чем проблема? функция принимает неопределенное количество параметров, формирует запрос исходя из плэйсхолдеров и параметров, после запроса.
|
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Добавлено через 3 минуты и 40 секунд Насчет "не ООП", ну так вот - засунуть все стандартные функции mysqli в свой класс это не есть ООП. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
gta4kv, опять же, что такое ооп по вашему?
|
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Я не умею умные длинные посты писать, но, еще раз повторюсь, сделать класс который будет выполнять стандартные функции под другим именем это кривой велосипед
на предыдущих страницах писали - что понимание придет со временем Это сообщение отредактировал(а) gta4kv - 6.9.2010, 12:54 |
|||
|
||||
| Muerto |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
gta4kv, значит во первых вы считайте что вспомогательные классы это не ооп, и право на жизнь не имеет?
и мне каждый раз общение с базой с нуля нужно делать на основе чистой mysqli ? Далее, с чего вы взяли что все что мой класс делает это лишь использует mysqli и ничего более? Как бы если я впишу $db->do_query("myquery",1); то вы считайте что метод в классе выглядит вот так:
А на самом деле вот так:
Т.е. если бы я взял ваш подход, то при каждом запросе я бы писал заново с нуля все что у меня под "на самом деле" Здесь же есть класс который все это делает для меня, и сокращает код с 1000 строк до 100, и это плохо да? Это сообщение отредактировал(а) Muerto - 6.9.2010, 13:22 |
||||
|
|||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
По-моему поциенту уже объясняли что открывать соединение с базой необходимо в начале и не париться по поводу этого каждый раз при выполнении запроса.
Добавлено @ 13:25
И все таки, что курил автор? Это сообщение отредактировал(а) cutwater - 6.9.2010, 13:26 |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Да это точно supervladislav, забейте.
|
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
cutwater, Да вы это говорили и не раз, можете это проигнорировать, это лично мое предпочтение
Я так делаю потому что я лентяй, у этого есть все же свои преимущества но теоретически я бы мог в функции init_conn создавать подключение в конце объявления параметров... В функции __construct я это делать не могу потому что у меня сотни баз данных с разными паролями, максимум что я могу это использовать ini файл или что то другое откуда constructor будет данные грузить, или даже с класса Vars Но пока что я работаю без ini, хоть и класс ini_Parser я написал... Добавлено @ 13:31 gta4kv, вы общаетесь с http://www.facebook.com/dckurushin , я здесь на форуме не первый год и не первую тему создаю Это сообщение отредактировал(а) Muerto - 6.9.2010, 13:31 |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
||||
|
||||
| Muerto |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
cutwater, Да таки криво, я когда цитировал прибавил , что бы выглядело как то поумней и допустил ошибку
настоящий оригинал был такой: Тоже не фонтан но все же
А сейчас подумал лучше всего таки оставить старое с добавкой потому что trigger все равно что сделать exit, и будет висеть подключение
Добавлено @ 13:41 Какие параметры могут быть у функции
Обявление идет такое: $db=db_class::getInstance() И кто сказал вам что у меня один сайт? с 100 базами? у меня много сайтов, просто я раньше как то их все строил в процедурном стиле Это сообщение отредактировал(а) Muerto - 6.9.2010, 13:43 |
||||||||
|
|||||||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Жесть... как представлю что такой printf сработает на боевом сайте.... Сударь не слышал об исключениях? Хотя да я забываю, что сударь слышит только свое едино верное мнение.... зачем я тут перед ним распинаюсь. Все равно больше ###кода хорошего и разного. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
cutwater, вы про try catch?
Я считаю что если разработчик допустил ошибку скрипт нужно останавливать, или же если произошел сбой на сервере... в других случаях exit никогда не случиться Возможно со временем как тут многие пишут, я пойму что я не прав, и это как шоу, когда один из героев умер от инфаркта, продолжается все равно Это сообщение отредактировал(а) Muerto - 6.9.2010, 13:46 |
|||
|
||||
| cutwater |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
в 10й раз повторяю об инициализации базы в начале. из конфига, из переменной whatever.... если так не хочется открывать соединение заранее, да пожалуйста, вызывайте где угодно. параметры можно запомнить. НО это хреновый дизайн. Ибо писать нормально вы упорно отказываетесь...
Да потому что проблемы на пустом месте... проблемы с параметрами, не можете их передать где надо. Или зачем тогда было говорить про сотни баз с разными паролями. На сим откланяюсь. У меня о Вас сложилось вполне четкое мнение, и больше тратить свое время без пользы на Вас не намерен. Это сообщение отредактировал(а) cutwater - 6.9.2010, 13:49 |
||||
|
|||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
http://phpfaq.ru/error Это насчет ошибок. Написанное выше бред. Остановить скрипт - да, но выведенная ошибка - ###. Это сообщение отредактировал(а) gta4kv - 6.9.2010, 13:54 |
|||
|
||||
| Muerto |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
А может я вовсе не умею? и вы вашими советами мне ничем не помогайте кроме как сказать что вы можете хорошо а мое ###? Тут история вообще такая Мой стиль жизни экономный: У меня есть тачка снизу рядом с домом, я выйду заведу и поеду... А у вас стиль жизни другой: У вас тачка стоит рядом с домом и уже заведенная, и вы не думайте о том что возможно вы сегодня никуда не поедите и бензин сгорит зря!!! ИМЕННО ОБ ЭТОМ РЕЧЬ Это и есть самая разница между просто объявить объект класса, или объявить его и создать подключение, без учета того будем делать запросы или нет Добавлено @ 13:54
Не исключено , пообедаю и почитаю как правильно нужно делать, там чет опять trigger промелькнул... надо будет глянуть... Вообще мне лично не понятно (я ещё не читал то что дали) , я очень боюсь разных trigger ибо если подключение открыто, а например в вашем подходе оно будет всегда открыто с самого начала, то если мы работает с mysqli подключения сами закрываться не будут в конце работы скрипта в отличии вроде от mysql , и поэтому у нас быстро достигнется maximum connection Если вы захотите в подобную тему не лишь бы почувствовать насколько вы лучше и обосрать, то если демонстрировать как это делать вы не хотите, хотя бы давайте ссылки на толковые статьи! Это сообщение отредактировал(а) Muerto - 6.9.2010, 14:09 |
||||||
|
|||||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
советов дано огромное множество, все равно все по-своему. Что такое ООП? Читайте Гради Буча, я ссылку привел.
Добавлено через 23 секунды |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Кстати на настоящих сайтах где есть норм посещения, у меня вообще все по другому работает....
Я все же скрипт все равно обрываю, но перед этим, я пишу в error log (текстовый файл на сервере) Ошибку, и потом я могу посмотреть когда она произошла, на какой странице с какими параметрами, и код ошибки... Это сообщение отредактировал(а) Muerto - 6.9.2010, 14:18 |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Что мешает в __destruct сделать проверку - открыто ли соединение и закрывать его? |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
gta4kv, Вы должны понять что у меня сильная нехватка знаний.
Я очень плохо знаком с __destruct Из того что я читал и слышал, она срабатывает когда мы на объект делаем unset Но если мы делаем trigger или exit , скрипт обрывается (не на 100% уверен насчет trigger, но вроде так)... Если я читал в левых источниках, и когда скрипт останавливается не важно как, и создан объект класса, будет вызван __destruct то тогда вы однозначно правы, и я так и сделаю, ибо такой подход проще и лучше... сейчас почитаю Это сообщение отредактировал(а) Muerto - 6.9.2010, 14:23 |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Тут поможет документация.
http://ru.php.net/exit
|
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
gta4kv, Я сформирую вопрос немного иначе...
Когда скрипт обрывается, или заканчивает выполнение автоматический вызываются __destructor всех созданных объектов? Вы процитировали will always be executed even if exit() is called. А если exit not called а called trigger_error / скрипт просто закончился Это сообщение отредактировал(а) Muerto - 6.9.2010, 14:25 |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
см. выше. там есть ответ на вопрос
Добавлено через 7 минут и 3 секунды как бе, вызываешь триггер еррор и потом экзит. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
gta4kv, Спасибо, поигрался немного с __destruct при разных условиях и понял что к чему
У меня кстати целый домейн зареген чисто ради тренеровок =-) http://learn-php.ru Вот только осталось понять когда и как его использовать... Вроде бы при работе с БД, самое то... Но когда у нас класс вроде ini_Parser то все что у нас есть в классе это массив который содержит данные ini и через __destruct мы просто можем освободить память как бы... но есть ли в этом какой то смысл? или скрипт сам освобождает память в конце выполнения что скорее всего так и есть? Судя по http://stackoverflow.com/questions/2251113...in-php-destruct , кроме как закрытия подключений не нужно... Это сообщение отредактировал(а) Muerto - 6.9.2010, 14:52 |
|||
|
||||
| gta4kv |
|
||||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Ответ по твоей же ссылке6
|
||||
|
|||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
gta4kv, угу, я так и сказал "кроме как закрытия подключений не нужно..."
|
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Кроме того не знаю откуда вы взяли, что mysqli работает не так как mysql. После выполнения скрипта PHP закрывает все открытые соединения к базе данных, так что ваши беспокойства по поводу утечки соединений напрасны и необоснованы. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
cutwater, Вот в этой теме обсуждалось http://forum.vingrad.ru/forum/topic-308721.html
Я когда разрабатывал один из скриптов выскакивали ошибки которые остонваливали скрипт без вызова kill + close поэтому мне удалось дойди до предела... и вот как бы выходит что автоматом там не закрывает при определенных условиях |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Ну быть может тут я не прав, в таком случае конечно mysqli не совсем может быть удобен. Однако насколько я знаю уже в PDO решили эти проблемы и он вполне юзабелен. Я с mysqli на практике не сталкивался, работал с PDO и mysql, поэтому таки могу и ошибаться.
|
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
cutwater, Кстати если подумать так, то без вспомогательного класса вроде моего через который я использую mysqli, не только что нужно писать больше кода каждый раз,
а ещё и нету __destruct и надо следить за закрытием каждый раз... а это фактически не возможно, потому что и другие классы и методы могут выкинуть свои ошибки после открытия подключения... __destruct конечно супер тема, как то я им активно не пользовался раньше... Это сообщение отредактировал(а) Muerto - 6.9.2010, 16:50 |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
В динамических языках деструкторы мало применяются, так как время жизни объекта нельзя контролировать.
Для этого есть PDO, посмотрите, полезно будет. Добавлено через 44 секунды При чем обертка не только для mysql, что тоже нельзя не исключать. Вы все еще используете mysql? тогда мы идем к вам =) |
|||
|
||||
| gta4kv |
|
||||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
я кстати не понимаю, зачем ты в каждый класс добавляешь getInstance когда можно сделать самый простой класс для синглетона:
Добавлено через 1 минуту
Используем. Это сообщение отредактировал(а) gta4kv - 6.9.2010, 16:53 |
||||
|
|||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
С учетом того что паттерн Singleton зло, то применять его необходимо крайне осторожно и максимально редко. Поэтому обычно хватает одного на приложение. Если уж совсем никак без глобальных переменных. Кроме как для работы с базой в php не знаю где еще может пригодиться. Не встречал на практике, хотя может быть уже и не помню. Хотя еще и настройки... Другое дело что, например, в python-фреймворке svarga используется концепция environment (окружения), что есть по сути глобальный объект, хотя как один глобальный синглтон для приложения не назови, смысл не изменится. |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
С какой это стати Singleton зло?
|
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
С такой же, с какой и применение глобальных переменных. Неосторожное его применение может повлечь за собой неочевидные последствия. Это сообщение отредактировал(а) cutwater - 6.9.2010, 17:20 |
|||
|
||||
| SneG0K |
|
||||||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Круто, а у меня на ноутбуке стоит виртуалка с линуксом на борту Ну, как вам сказать... Вот когда будете писать какой-нить скрипт (типа парсера), который будет работать круглые сутки, тогда поймете какой в этом смысл
См. выше Да? С какой это?
Эмммм... Вот как-то не чувствую связи между сингелтоном и глобалками? Сингелтон это не анти-паттерн как-бэ) |
||||||
|
|||||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
gta4kv, Т.е. вы вашим классом предлагайте что бы некий общий класс хранил в себе все singleton моих классов и выдавал их когда нужно?
SneG0K че внатуре? у меня тоже vmware centos 5.5, только кроме этого и vds есть, то что дома и "реал" работают немного иначе, например в той сборке что у меня htaccess не пашет! Это сообщение отредактировал(а) Muerto - 6.9.2010, 18:33 |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Увы, даже apc на это левую сборку поставить не смог, в php.ini все включено а на деле не пашет =-) |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Я лишь говорил о чрезмерном и неумелом его употреблении. Поверьте встречается и такое. Связь с глобальными переменными самая прямая, только и того что Singleton более управляем. Так как этот объект глобален, это порождает побочные эффекты функций, что в свою очередь может повлечь за собой трудноуловимые проблемы. Поэтому все хорошо но в меру. Кроме того, так как из-за существования глобальных объектов поведение функции бывает трудно предсказать, что влечет за собой проблемы при покрытии и тестировании кода. Это сообщение отредактировал(а) cutwater - 6.9.2010, 19:03 |
|||
|
||||
| Muerto |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Когда на форуме никто причины не знает, и во всем гугле люди жалуются на подобную проблему без ответа, Я не собираюсь тратить больше времени чем потратил на это. если бы я линукс с нуля ставил я ещё понимаю, а так один хер знает что там напихали, и почему оно не пашет мне никто не скажет По поводу factory и singleton... А грех ли это их совмещать? Как бы singleton может и сам инклюдить библиотеку которую я хочу создать... Это сообщение отредактировал(а) Muerto - 6.9.2010, 19:05 |
||||
|
|||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
/dev/head /dev/hands |
|||
|
||||
| Muerto |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Ну тебе повезло, как родился так со знаниями php, и управлением серверов и тп. Это сообщение отредактировал(а) Muerto - 6.9.2010, 19:14 |
||||
|
|||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Обалдеть, не установить на линукс апач и php
|
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Это ты кому? у вас тут мания виличия о обсирания ? о великие ? |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
казалось бы при чем тут php.ini к .htaccess ? Вам к этому больше нечего добавить? @see http://www.rsdn.ru/Info/Howtoask.xml |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Он родился с левой и правой рукой, а еще с головой. "тыкать" друзьям свои будешь! Думаешь, тут пишут люди тупее тебя? Когда тебе что-то говорят, прислушивайся, а не корчи из себя неизвестно что! |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Кто виноват, ести ТЫ ниасилил? Да вы хам, сударь. На ты вам никто обращаться не разрешал. Учитесь уважению, общению в интернетах, правильной реакции на ответы вам. И читайте ссылку что я дал выше. |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Да вы ещё убейте за то что я вас в php.ini послал а не в httpd.conf или ещё куда то. (кстати htaccess уже пашет, благо есть норм форумы ещё)
Тема закрыта, форум флудеров, нефига по делу не скажут не помогут, только срач и флуд Это сообщение отредактировал(а) Muerto - 6.9.2010, 19:30 |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Да уж... надо открывать на форуме заповедник особо адекватных людей. =) |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Вот ваше истинное лицо!
Человек возможно плохо знает php, а вы его идиотом обзывайте, ну-ну ![]() Дружелюбный форум... Насколько я помню это раздел общих вопросов а не профи... |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Muerto, что ж у нас приличный форум, обстоятельства не позволяли сказать это как бы при всех. А давно хотелось. Если бы Вы были не настолько глупы, и умели осознавать свои ошибки, возможно были бы более успешны и в изучении php. Вас же никто не винит за "незнание", но за ваше отношение.
|
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Muerto, если человек плохо знает PHP, то какого хрена он не слушает более опытных людей?
У меня бабушки такие под подъездом сидят, то нихрена не знаю, но считают что самые опытные |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Если вы почитайте ваши ответы мне, то вы увидите что вы мне информативных ответов не даете, а только говорите :
какой я тупой, плохой, и что я нифига не понимаю, а мы тут такие крутые, и умные, и все знаем, неужели не видно с наших слов что мы все знаем и как нужно делать? А вы знайте? не видно! пока что 95% ваших сообщений это само хваление и наезд на человека который не разу и не утверждал что он профи Кстати это относиться к двум ораторам выше меня, другие как правило отвечали по делу и с примерами |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Вам уже давно ответили, что вы пишете кривой велосипед и предложили посмотреть уже готовые классы, а вы все продолжаете утверждать, что "длиннее" у вас, даже не глянув на другие реализации.
Добавлено через 1 минуту и 49 секунд Окей, даже если "два оратора выше" не дали информативных ответов, то остальные участники дискуссии уже давно привели факты с примерами и все равно для вас этого было мало! |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Что вы до человека докопались, он, между прочим, вам не хамил, а только отстаивал свою точку зрения.
От тебя, SneG0K, точно такого не ожидал. Вот вроде умные люди, даже слова какие умные были, а ведёте себя как детсадовцы не сильно развитые. Это сообщение отредактировал(а) gta4kv - 6.9.2010, 20:03 |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
gta4kv, ты прав. Действительно что-то я разошелся.
Muerto, извини, ты к этому еще и сам дойдешь. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |