Что все имеет допустимые характеры для имен людей? [закрытый]

Хорошей идеей является использование «объектно-реляционного картографа», подобного Idiorm :

$user = ORM::for_table('user')
->where_equal('username', 'j4mie')
->find_one();

$user->first_name = 'Jamie';
$user->save();

$tweets = ORM::for_table('tweet')
    ->select('tweet.*')
    ->join('user', array(
        'user.id', '=', 'tweet.user_id'
    ))
    ->where_equal('user.username', 'j4mie')
    ->find_many();

foreach ($tweets as $tweet) {
    echo $tweet->text;
}

Он не только избавляет вас от SQL-инъекций, но и от синтаксических ошибок! Также поддерживает коллекции моделей с цепочкой методов для фильтрации или применения действий к нескольким результатам сразу и нескольких подключений.

43
задан Your Common Sense 4 May 2012 в 19:51
поделиться

9 ответов

Существует хорошая статья W3C, названного Имена во всем мире , который объясняет проблемы (и возможные решения) вполне прилично (это было первоначально сообщение в блоге с двумя частями Richard Ishida: часть 2 части 1 и )

Лично я сказал бы: поддерживайте каждый печатаемый Символ Unicode, и быть безопасным предоставляют просто единственному полю "имя", которое содержит полное, отформатированное имя. Таким образом, можно сохранить в значительной степени каждую форму имени. Вы, возможно, нуждались бы в большем структурированном хранилище, но тогда не ожидаете быть в состоянии сохранить каждую комбинацию в структурированной форме, поскольку существует просто слишком много различных.

44
ответ дан Joachim Sauer 26 November 2019 в 22:53
поделиться

Белый список символов, которые могли появиться на имя человека, является неправильным способом пойти, если Вы спрашиваете меня. Несомненно, [A-Za-z] является справедливой начальной точкой, но, поскольку Вы сказали, Вы получаете проблемы с "европейскими" именами. Таким образом, Вы отображаете все умляуты, циркумфлексы и тех. Что относительно китайских имен? Японский язык? Индиец? Иврит? Вы вводите сражение против ветряных турбин.

, Если бы Вы абсолютно должны проверять законность чьего-то имени, я предложил бы делать скромный черный список определенных символов. Фигурные скобки, математические символы, некоторую пунктуацию и такой могло бы быть безопасно проигнорировать. Но я был бы осторожен на вашем месте.

могло бы быть лучше просто принять то независимо от того, что входит. UTF-16 должен быть сегодняшним набором символов излишества, который должен соответствовать в течение нескольких последующих лет.

Редактирование: Что касается Вашего вопроса о длине имени и сумме имен. Если Вы действительно хотите, чтобы люди написали свои реальные и полные имена, я предполагаю, что единственный надежный ответ на оба из тех вопросов был бы "бесконечен". Не будучи способен выкрикивать любые реальные примеры для людей, но конечно существуют аналогичные примеры для людей как собственное название города Бангкока .

16
ответ дан Henrik Paul 26 November 2019 в 22:53
поделиться

Я не думаю, что существует категорический ответ. В конце концов, у некоторых людей есть имена, которых нельзя даже выразить в UTF-16...

Prince symbol

там существуют некоторые нечетные люди, которые дадут их детям самое сумасшедшее из имен, включая включение странной пунктуации, диакритические знаки, которые не существуют на их собственном языке, и т.д.

Однако, можно установить произвольные ограничения для базы данных. Если Вы хотите Вам, может настоять на именах ASCII на 7 битов. Это немного грубо пользователям, но они будут жить с ним. Это, конечно, делает поиск легче.

дочерний элемент Моего коллеги называют AmГ©lie. Но даже некоторые (не все!) официальные британские правительственные веб-сайты ("Введите имя точно как показано на свидетельстве о рождении"), не примет unicode, таким образом, он должен использовать 'Amelie' вместо этого.

10
ответ дан Community 26 November 2019 в 22:53
поделиться

Любой символ, который может быть представлен любым несколько восемь битов (больше, чем нуль) является возможным символом для имени человека. Длины и имен и кодировки произвольны, таким образом, никакую верхнюю границу нельзя рассмотреть.

Просто удостоверяются, что Вы санируете свои исходные данные базы данных, такой маленький Bobby Drop-tables не получает ya.

3
ответ дан Max 26 November 2019 в 22:53
поделиться

По вопросу о полях имени НЕПРАВИЛЬНЫЙ ответ является именем, средней начальной буквой, фамилией, и т.д. по многим причинам.

  1. Многие люди известны их вторым именем, и официально используют первую начальную букву, второе имя, формат фамилии.

  2. В некоторых культурах, фамилия является именем, и имя является фамилией.

  3. Несколько первых и/или средних имен становится более распространенным. Как @Dour Высокая Дуга указывает, другое экстремальное значение является людьми только с одним словом на их имя.

В объектно-ориентированной базе данных, Вы хранили бы объект Имени с методами для возврата имени стиля подписи или стиля каталога; и запоминающее устройство содержало бы любые данные, было необходимо для поддержки тех методов.

я еще не видел модель реляционной базы данных, которая изменяет к лучшему модель двух строк переменной длины для имен стиля подписи и стиля каталога.

3
ответ дан Ken Paul 26 November 2019 в 22:53
поделиться

Это действительно зависит от того, для чего приложение, как предполагается, используется.

Несомненно, в теории замечательно, если Вы позволяете каждому сценарию на зеленой земле бога использоваться, но если DB также используется персоналом поддержки, будут ими способный обработать имена в японском, еврейском и тайском сценарии? Можете Вы принтер, если он используется для печати маркировок пересылки по почте?

Вы могли бы добавить дополнительное поле "Latin Transcription", но IMO, нормально действительно ограничивать его символами ISO-8859-1 - Люди, которые не используют латинские символы, к настоящему времени так привыкли к необходимости использовать запись, что они больше не возражают против него, если они не жесткие националисты.

2
ответ дан Michael Borgwardt 26 November 2019 в 22:53
поделиться

Что Вы делаете, когда у Вас есть "Художник, Раньше Известный как принц". Тот символ, который он использовал, не является символом в (AFAIK) набора unicode.

Это - некоторое легкомыслие, но в то же время имена являются довольно широким понятием, которое не предоставляет себя хорошо структурированному формату. В этом случае что-то свободная форма могло бы быть самым соответствующим.

0
ответ дан casperOne 26 November 2019 в 22:53
поделиться

UTF-8 должен быть достаточно хорошим, до полей имени Вы захотите в минимуме имя и в последний раз.

0
ответ дан chills42 26 November 2019 в 22:53
поделиться

В зависимости от сложности Вашей структуры имени я видел:

  1. Имя
  2. средняя Начальная буква/Второе имя
  3. Фамилия
  4. Суффикс (сэр II младший, III, IV, и т.д.)
  5. Префикс (г-н, г-жа, г-жа, и т.д.)
-2
ответ дан TheTXI 26 November 2019 в 22:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: