2012-06-17 1 views
0

Я нахожусь в процессе проверки формы, которую я буду использовать на своем веб-сайте, чтобы получить определенные сведения о человеке бизнеса, который регистрирует онлайн-счет у нас.HTML/PHP - Проверка - основные требования к проверке для веб-сайтов электронной коммерции? (имя и фамилия вместе с электронной почтой)

Я пишу этот вопрос, чтобы получить немного совета относительно правильности правильности следующих типов информации.

Чтобы получить объяснение, я перечислил ряд типов данных вместе с проверкой html, которую я имел в виду. Затем это можно было бы повторно использовать в серии php-валидаций для других вещей, чтобы убедиться, что форма всегда правильно проверена, однако стандартная проверка html, на мой взгляд, выглядит лучше, чем все, что я смог достичь, применяя свой собственный CSS.

Первые имена - ^[a-zA-Z -]{1,120} (аз, от 1 до 120 символов длиной, большие или маленькие буквы)

Фамилии - ^[a-zA-Z -]{1,120}

Адреса электронной почты - ^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$ (в том числе проверка .com и .co.za доменов который в основном используется)

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

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

Спасибо!

+0

Неподтверждение адреса вообще может разрешить почтовую инъекцию. Например, написать свой адрес электронной почты как \ r \ ncc: [email protected] –

+0

@Ben Вау, я никогда не думал об этом таким образом ... Вид двойной работы, как будто я требую, чтобы они нажимали на ссылку в электронном письме с подтверждением. Не могли бы вы объяснить больше о символах юникода? –

+0

* Как * вы должны проверить свои имена, зависит от ваших требований. Просто a-zA-Z для имен будет неприемлемым для типичных имен, с которыми я обычно сталкиваюсь. Достаточно ли этого для вас или нет, зависит от вас и вашего бизнеса. – deceze

ответ

2

Ваша «проверка» имен исключает все языки, которые не используют латинский алфавит. Зачем? Я думаю, вы могли бы проверить, нет ли там чисел и оставить это на этом. Если вы хотите, чтобы люди без латинских имен могли использовать ваш сайт, то ваша (база данных?) Должна быть в наборе символов, таком как UTF-8, и вам придется разрешить все. Даже попытка удалить грубые слова может привести к scunthorpe problem.

Не проверять электронную почту, используя регулярные выражения. Отправляйте/пингуйте адрес и заставляйте человека нажимать на ссылку. Это technically impossible для проверки адреса электронной почты с использованием регулярных выражений и лучших разработанных can be ridiculous. Non-latin domain names exist и как с именами вы не можете использовать латинский алфавит, чтобы убедиться, что они содержат то, что вы хотите.

Кроме того, как ICANN are currently selling off some new gTLDs, это существенно увеличит доступное пространство имен, которое вы никогда не сможете гарантировать, что-то фактически существует без проверки.

Очевидно, что если вы используете базу данных, используйте подготовленные операторы, чтобы остановить SQL Injection.

+0

Как указано в моих комментариях, вы должны проверить, что адрес электронной почты не содержит вредоносных символов, таких как те, которые используются в качестве управляющих символов в формате электронной почты. –

+0

Практически невозможно проверить электронную почту в соответствии с RFC *, используя регулярное выражение *. Это вполне возможно, чтобы проверить его, используя еще какой-то код ... Несмотря на то, что быть полностью совместимым с RFC довольно сложно ... – deceze

+0

Помимо этого вы можете проверить, действительно ли существует ** ** по электронной почте, выдавая SMTP-запрос и спрашивая, поле электронной почты действительно. –

Смежные вопросы