web-dev-qa-db-ja.com

名前/姓の入力の文字数制限はどのようにする必要がありますか?

ユーザーの姓と名の入力フィールドを作成します。もしあれば、最小値と最大値はどうあるべきですか、そしてなぜですか?

35
NogaNitzan

理論的には、正しい答えは名前の長さの上限ではありません。ユーザーが使用できる文字を使用して、ユーザーが自分の名前を入力できるようにします。これにより、有効な本名を入力できないようにする状況に遭遇することはありません。

実際には、実装することはできません。

制限がなければなりません。

これらの制限は主観的なものになる可能性があります。たとえば、「実際の」名前を構成するものは、次のような名前にならないようにします。

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

この目的のために、たとえば、Facebookはかなり単純明快です 一連の制約 彼らは強制します:

名前に次のものを含めることはできません:

  • 記号、数字、通常とは異なる大文字の使用、文字の繰り返し、句読点
  • 複数の言語の文字
  • あらゆる種類の肩書き(例:職業、宗教など)
  • ミドルネームの代わりの単語、フレーズ、またはニックネーム
  • あらゆる種類の攻撃的または示唆的なコンテンツ

長さは明示的には言及されていませんが、 this SO post によると、制限は現在50文字です。

Active Directoryでは、Display-Name属性は256文字に制限されています。

これらは異なる2つの例にすぎません。複数のサービスを調査して、その長さの制限を確認することもできますが、実際には、許容できるものを自分で決定する必要があります。

しかし、なぜ制限があるのですか?!?

主観的ではない1つの制限があります:security

ユーザー入力を受け入れて内部化するインターフェイスは、間違いなく、入力を検証およびサニタイズする必要がある脅威として扱う必要があります。入力は 検証済み で、正しいタイプ、長さ、形式、範囲であることを確認する必要があります。

little bobby tables が1日を台無しにしないように、入力をサニタイズする必要があります。しかし、衛生状態の弱点が発見された場合、検証ステップ(長さのチェックを含む)は、攻撃者が脆弱性を悪用する方法を制限することによって保護を提供します。

別の客観的な制限があります:ストレージ容量

全世界の文化の中には、正当に1,073,741,823バイト(SQL Serverのntextデータ型の上限)である名前を持つ人はいません。しかし、それもデータストアの技術的な制限である制限です。

それで、限界はどうあるべきですか?

問題は、いくつかの理由により、制限がないという選択肢がないことです。間違いなく主観的なものもあれば、客観的で現実的で不可避のものもあります。

しかし、ユーザーが過度に拘束されることも望まない。

適切に設計されたシステムは、ユーザーがそもそも制限があることを知らなくても、両方のニーズが確実に満たされるようにします。透過的に安全で使用可能である必要があります。

そのためには、現在のデータセットで最も長い名前よりも(任意に)25%長くするのが妥当な制限だと思います。十分な大きさのサンプルがあれば、ユーザーに十分な余地を与えることができるはずですが、悪意のあるユーザーがシステムを悪用しようとすることはできません。

34
Charles Wesley

名前の多様性を考えると、私はしません...

  1. 名前の長さに床または天井の制限を設定し、
  2. または、名前を2つの別々のフィールドに分割することもできます。

人の国/文化的背景によっては、西洋化された[名] [姓]の名前を持っている場合がありますが、そうでない場合もあります。恣意的な制限のため、ユーザーが完全な名前を入力できないようにするのはなぜですか?

姓と名を別々のフィールドに分割する理由が、姓または名でユーザーをアドレス指定できる可能性がある場合は、ユーザーにニックネームまたは希望する方法を尋ねる追加のオプションフィールドを提供することをお勧めします対処されます。

7
Hynes

姓は50文字(レイアウトによっては15〜25文字がフォーム入力フィールドに表示されます)で十分です。とにかく、それは私にとってうまくいくものです。一貫性を保つために、名には同じ量を割り当てる必要があります。
私は10年ほど前に50の数を決定しました。なぜなら、realisticで思いつくことができる名前ad hocは15文字で、3x15 = 45だったからです。 (安全のために3倍)、50に切り上げます。それ以来、私はそのマジックナンバーを使用しており、これまでのところ不満はありません。何も期待していません。

はい、理想的な世界では、制限はありません。選択したすべての制限は、選択した瞬間に「間違った」ものになります。ただし、私たちは、ストレージ(および画面スペース)が有限であり、フォームを賢明で有意義な方法でレイアウトする必要がある現実の世界に住んでいます。
両親があなたに350文字の名前を付けることを決めた場合、登記所の店員はあなたもその名前のパスポートを取得するのが不幸だとあなたに伝えます。いいえ、彼らは特大のパスポートを作成するつもりはありませんあなたのためだけに

名前( "Wolfeschlegelsteinhausenbergerdorff")は実際の名前よりもデマのように見えますが、最長の申し立て済み申し立て人に割り当てられた姓は35文字です。 意図的にが彼自身を重要にするためにそのような名前を選んだのは本当の人かもしれませんが、あなたは決して知ることができません。
しかし、特によく知られているミームWolfeschlegelsteinhausenbergerdorffwelchevoralternwarengewissenshaftschafers [...]を見ると、ドイツ語の名前ではなく、ある種のピジン語ドイツ語の全体的な物語であり、大まかに何かに翻訳されるので、私はそれを疑います「ずっと前に、非常に勤勉な編み物をせず、非常に勤勉な保護具を備えた勤勉な羊飼いだった[別の3レベルの間接、そしてもっと無意味な何とか何とか]]のように、それは完全にでたらめのように見えます。

それは確かにランカシャーのプレストンさんの少し異なる話です、彼はすべての外観に非常識な親を持つ実在の人物です(またはtwo非常識な両親)が、実際にはそれほど違いはありません。
氏。プレストンがファーストネームで「ジェンセンジェイアレクサンダーバイキーカーライルダフエリオット」としか入力できない場合は、プレストンに大きな障害はありません(他の人と混同される可能性もありません)。とにかく、彼は「ジェンセンジェイ」または「ジェイ」だけを使用したいと思うでしょう、そして学校の子供たちが彼の名前をからかうたびに彼の父親を呪います。

locationsのほとんどの既存の名前(一般に人に与えられる名前よりもはるかに長い)でも50文字に収まりますが、ニュージーランドの小さな丘のマオリ名は例外です。その言語を話す人は約6万人しかいないため、地球上のほとんどの人はおそらくその重要でない丘を聞いたことがないので、それは無視できます。
惑星上の他のすべての既存の場所の名前は、少なくともその短い形式(ウェールズで1か所)または完全に(他のすべての既知の場所)で、これらの制約に適合します。

2
Damon

アプリケーションのタイプに基づいて、名前の上限または下限を選択できます。人は完全な名前の代わりにイニシャルを書くことを選択するかもしれないので、トリッキーなアプローチでも上限は下限が1文字になるかもしれません。システムに名前が必要な場合は、名前を入力せずにユーザーを終了させたくないでしょう。

Charsの上限の選択は、実装の種類とホストすることを期待している対象者にも依存します。

実装がソーシャルネットワーキングの順序である場合、ユーザーに例外的に長い名前を設定させることができます。まあそれはソーシャルネットワーキングなので、ユーザーが狂ってしまうのを制限することはできません。ただし、特定の上限に制限することで、彼/彼女を導くことができます(そうでない場合、名前自体として1024文字の投稿を挿入することができます)。 UXの増加は非常に重要ですが、常にトレードオフがどこかにあるため、姓と名の概念を削除し、名前に単一のフィールド(上限として300〜350文字)を指定すると、実験に十分な長さになります。サイトの健全性を保つのに十分短いです。

人々が何らかの情報を期待して来ることを期待し、(少なくともソーシャルネットワーキングのムードではない)深刻である可能性があるセミ/非ソーシャルネットワーキングオーダーの場合、名前に関してはシンプルで現実的なものを維持することを好むかもしれません。ファーストネームとセカンドネームのそれぞれについて、安全な100〜125文字の制限を設定することを選択できます。私たちが遭遇する可能性のある名前の種類を判断できないため、それを制限するために寛大でなければなりません。

さらに、名前の特殊文字の使用を制限することもできます(これも実装に基づいています)。これは、あなたが尋ねた質問に関連していない可能性がありますが、それは私の頭に浮かび上がったので、共有しました。

1
roni