В последние годы я регистрировался в различных приложениях и платформах, размещенных в сети или офлайн.
Почему в именах пользователей не допускаются пробелы, поскольку они очень естественны для имен, и большинство вычислительных систем могут обрабатывать их эффективно.
(Многие люди могут задать аналогичные вопросы о других специальных символах, которые являются незаконными. Но их случай гораздо более понятен, поскольку они даже не естественны для реальных схем именования. И конечно!)
Да, но вы не можете использовать свое настоящее имя, если в нем есть апостроф.





Единственная причина, по которой я знаю, что это имеет смысл, заключается в том, что если вы анализируете токены на пробелах, добавление пробела в имя пользователя приведет к сбою.
Однако я согласен с вами: в сегодняшней среде, вероятно, не так много причин продолжать это делать, за исключением случаев, когда совместимость с устаревшими версиями имеет смысл (* nix и т. д.).
Пробелы в именах пользователей отлично работают в unix. Я уверен, что они испортят множество скриптов людей, возможно, включая те, которые идут вместе с ОС, но все основные вещи работают нормально.
Я полагаю, потому что какой-то код где-то все еще обрабатывает ввод как набор параметров, разделенных пробелами, во многом так же, как командная строка Windows обрабатывает имена файлов без кавычек. Например, если вы должны передать имя пользователя внешнему исполняемому процессу, написанному на C, где имя пользователя было передано в командной строке, оно поступит в приложение C в виде двух аргументов.
Хотя на практике это больше не может происходить, как и многие специальные символы, я предполагаю, что это причина, по которой он там.
Я думаю, потому что обычно это тенденция обрезать значения полей ввода до того, как они будут фактически сохранены, скажем, в базе данных.
Поскольку мы удаляем пробелы и разрешаем их в пароле или имени пользователя, вы можете себе представить, что возникнет большая проблема, если пользователь введет пароль как «PWD».
Обрезка удаляет пробелы (и другие недопустимые символы) в начале и в конце данных, а не между допустимыми символами.
Что делать, если пользователь вводит пароль как pwd <пробел>
Хотя это не было оговорено исключительно, но якобы это не тот случай, который мы обсуждаем.
Если пароль хеширован (как и должно быть), то это не проблема.
Я часто использую пробелы в паролях, если они принимаются, они, вероятно, хешируют их, и я знаю, что мой пароль более безопасен. Любая форма фильтрации паролей (запрещающие символы, отсутствие пробелов, максимальная длина и т. д.) - это огромный красный флаг для меня, чтобы покинуть сайт и никогда не возвращаться.
Это предотвращает смешение схожих комбинаций имен, например. «Джон Смит» и «Джон Смит». Это также упрощает автоматическое распознавание имен, которые появляются в тексте.
По сравнению с JohnSm1th и J0hnSmith? Я просто не вижу в этом причины, извините.
Независимо от того, как вы это видите, на самом деле это одна из причин, по которой это делается.
Это зависит от того, где они будут использоваться. Отказ от использования пробелов в именах пользователей unix имеет смысл по той же причине, по которой имеет смысл не использовать их в именах файлов unix - их сложно вводить в командной строке. Тем не менее, unix допускает пробелы в именах пользователей, а также в именах файлов.
Я не вижу причин, по которым такие вещи, как веб-приложения, не допускают пробелов.
На самом деле меня больше всего раздражает то, что веб-приложения не позволяют использовать @ в именах пользователей. Когда это что-то с миллионами пользователей, шансы на то, что имя, которое я действительно хочу, будет доступным, невелики, поэтому мне нравится использовать свой адрес электронной почты, который, по крайней мере, гарантированно будет уникальным.
Я думаю, что на самом деле это, вероятно, одна из тех условностей, которые необходимо нарушить. Большинство систем теперь имеют дело с большим количеством сложных данных и используются для правильной обработки текста, который включает пробелы. Я был рад обнаружить, что fogbugz (еще один плагин) примет ваш адрес электронной почты, ваше имя пользователя или ваше настоящее имя, как вы его ввели; в качестве имени пользователя при входе в систему.
Это просто соглашение, которое все еще существует со времен восьмибуквенных имен файлов и, вероятно, также восьмибуквенных имен пользователей. Я бы посоветовал вам разрешить это в своем веб-приложении и позволить миру следовать за вами. :)
Одна тонкая проблема, связанная с пробелами в именах пользователей, заключается в том, что символ пробела «невидим», и два последовательных пробела могут выглядеть очень похожими на одиночный пробел. Ошибки, возникающие при вводе двух пробелов вместо одного, может быть трудно обнаружить, и это одна из причин, чтобы запретить все пробелы.
Некоторые системы могут запрещать пробелы, но все же разрешать неразрывные пробелы. Умный пользователь может использовать этот факт для включения пробела в свое имя пользователя.
Если вас беспокоит несколько пространств, я бы сказал, что гораздо более удобное решение - свернуть несколько пространств в одно, а не полностью их запретить.
Я согласен с тем, что в именах пользователей должны быть разрешены пробелы. Фактически, вы можете использовать пробелы в своем имени пользователя Stack Overflow; воспользуйтесь этим! :-D