Ну вот и получается, что ~[A-H]{1}[#b]?~ вдобавок одна из частей, перечисленных в длинной строке. И это надо посадить на условие, может быть а может и не быть
Вот мой результат пока. Надо тестировать на сложных аккордах и править.
Давным давно было интересно и вот теперь стало необходимо написать скрипт, который смог бы выпарсить все аккорды их текста и обернуть условно в какой-нибудь тег, например в span.
Начало аккорда всегда такое ~[A-H]~ а вот далее могут быть десятки различных вариантов. Немного погуглив, нашел простенький генератор _http://www.amdm.ru/cgen/_ В нем можно сгенерировать для примера несколько аккордов, чтоб понять что к чему.
Также после основной части может быть а может и не быть "#" и "b" (без кавычек)
Получается что-то вроде ~[A-H]{1}[#b]?~
Погуглив еще чуть-чуть нашел нечто похожее на большинство вариантов, которые могут быть после нашей основной части (тут не все конечно, но все же):
Ну а теперь самое главное, соединить все это воедино. И получить вместо наших аккордов из примера (C, G, D и.т.д.) что-то вроде <span class="chord">C</span><span class="chord">G</span><span class="chord">D</span> внутри нашего исходного текста
Кто-нибудь сможет помочь с написанием php-шки? Небольшую функцию для реализации вышеописанного. Может есть люди, которые лучше разбираются в принципах построения аккордов, так и дополнят еще возможными комбинациями.
В довольно-таки популярном js-фреймворке kendo присутствует виджет grid. Из названия виджета понятно, что он представляет из себя таблицу. При проведении фильтрации, сортировки и т.п., грид отправляет набор фильтров, из которых потом формируется sql-запрос.
$result.='(`'.$filter['field'].'` LIKE "'.$filter['value'].'%")';
case'endswith':
$result.='(`'.$filter['field'].'` LIKE "%'.$filter['value'].'")';
default:
break;
}
}
}
}
$result.=')';
}
if($result==''||$result=='()'){
return'';
}else{
return$result;
}
}
Помогите, пожалуйста, написать нормальную функцию, которая могла бы обрабатывать присылаемые фильтры. Я думаю это будет полезно многим, кто использует подобную фильтрацию.
Могу предложить использовать следующее:
Если вы осуществляете загрузку ajax`ом, то по нажатию на копку показывать loader.gif, по окончанию - скрывать.
Иначе - можно просто по нажатию на кнопку показать тотже лоадер. А по завершению загрузки - страница перегрузится.
тогда можно сделать проверку по IP и пускать только с "разрешенных"
К сожалению нельзя, ибо контрольные тестировани проводятся с этих ip, а у студентов есть возможность готовиться к тестированиям, проходя пробные со своих домашних компьютеров.
Я думал может сделать так:
при успешной авторизации, ставить пользователю статус - "авторизованный" на время - равное времени теста (неизвестно как определять это, но не важно) + минут 10 на различного рода нюансы. Менять статус по нажатию кнопки выход или по истечении времени. А также нужно убить сессию текущему пользователю.
Но пришел к выводу, что это бредовая, непродуманная идея.
Даже не знаю, чтоб еще такое придумать, чтоб защититься от этого.
1) Что есть "хорошая авторизация"? Хотелось бы сделать ее так, как это нужно делать на самом деле.
Ибо в интернете множество примеров (мусора) на эту тему. А хотелось бы увидеть реализацию от профессионалов.
2)
vitaliy_mad пишет:
и зачем тогда вообще авторизация, если любой студент может зайти под любым логином?
Тут неточно.
Логин и пароль раздаются каждому индивидуально перед началом тестирования.
Все студенты проходят авторизацию и начинают проходить тест.
Далее умные студенты, дождавшись 5 минут (они естественно не знают точное количество времени), отправляют логин и пароль своему другу, преподавателю, вобщем тому, кто может за них решить.
После того, как за него ответят на вопросы, студент жмет кнопку завершить и... успешно сдает тестирование.
Да, у нас в таблице онлайн обновляется айпишник, на котором открыт тест данного пользователя. И легко отследить администратору где не 192.168.*.*
Но это опять-таки заплатка на проблему, а не правильное ее решение!
vitaliy_mad пишет:
Переделав систему авторизации Ваша проблема останеться. Онлайн делается только по таймауту. другого варианта нет. разве что использование cgi и забыть про PHP. Использовать постоянный конект с клиентом...
Другой вариант написать на Вашем сайте JS кодик который регулярно бы делал запрос к серверу и тем самым обновлял ваш онлайн
Опустим систему отслеживания онлайн.
Главное избавиться от множественной одновременной авторизации.
я тоже так думаю, 5 минут - это очень мало. может пользователь читает страницу.
Думаю это не выход.
Статистика об онлайне будет очень неточной.
Можно пересмотреть всю систему авторизации и отслеживания онлайн.
Главное запретить одновременную авторизацию.
И Ведь даже увеличив таймаут - мы сможем авторизоваться через 40 минут, час два часа и т.д.
З.Ы.
Студенты (для которых и пишется это) в состоянии подождать лишний час, лишь бы получить халяву)
Доброе время суток)
Столкнулся с проблемой. Вкратце:
Нужно запретить авторизацию пользователя тогда, когда под таким же логином пользователь уже авторизован.
В данный момент это осуществляется так.
Есть таблица online;
При авторизации записывается id сессии, текущее время.
При обращении к страничке мы проверяем такой айдишник сессии в базе, если есть, то обновляем время.
Далее идет проверка тех пользователей, кто не был активен. Т.е. если разница записанной даты и текущей более 5 минут - то пользователь считается оффлайн и строчка из базы удаляется.
При авторизации мы проверяем есть ли такой пользователь онлайн - если да, то запрет на авторизацию, нет - логинимся и все сначала)
================================ =======================
Суть проблемы:
Представим, что пользователь авторизовался, посидел на сайте 5 минут без действий. Значения из базы online удалились. В это время авторизовался пользователь2. (ведь данные о сессии пользователя 1 удалены)
Таким образом мы получили 2 пользователей онлайн под 1 учетной записью.
================================ =======================
Каким образом организовать авторизацию, чтоб избежать таких камней?)
Присоединюсь к вопросу с маленьким уточнением (чтоб не плодить тем). Как организовать вывод на печать, допустим, результат sql запроса. Причем с важным уточнением. На каждой странице чтобы была шапка таблицы!