CREATE TABLE person (
id SERIAL PRIMARY KEY,
name TEXT, -- извините за размерность
name_hash TEXT -- извините за размерность
);
CREATE INDEX idx_person_name_hash ON person(name_hash);
INSERT INTO person (name, name_hash) VALUES ('Petroff', 'P361' /* <?php echo soundex('Petroff'); ?> */ );
INSERT INTO person (name, name_hash) VALUES ('Sidoroff', 'S361' /* <?php echo soundex('Sidoroff'); ?> */ );
INSERT INTO person (name, name_hash) VALUES ('Ivanoff', 'I151' /* <?php echo soundex('Ivanoff'); ?> */ );
-- примеры реализаций soundex для русского я указал выше
SELECT name FROM person WHERE name_hash = 'P361'; -- все кто по звучанию напоминает Petroff
Мне показалось, что я путаю JS и PHP
В JS var that = this приходится делать, чтобы в принципе не потерять контекст, а в PHP — только чтобы Code Complitions включить
Лучше составь статью про уязвимость и поделись с сообществом, скажем, месяца через три.
Сайт за этом время дырку прикроет, а если нет — это их проблема. В статье только не упоминай конкретный адрес.
В общих чертах алгоритм роутинга и диспетчеризации можно описать так
URI имеет вид example.com/{action}{parameters}
где
{action} — это правило, описывающее выбор класса/скрипта/функции, которая будет обрабатывать параметры
например, /post/add можно преобразовать в class PostController { function addAction() { } } или function post_add() { }
{parameters} — это правило, описывающее параметры
например, /x/1/y/2?z=3 можно преобразовать в ассоциативный массив array { x=> 1, y => 2, z => 3 } нотация и порядок парамеров при этом не важен