Javascript adınızı ve e-posta arasındaki farkı hesaplanırken

4 Cevap php

güvenlik nedenleriyle benim web kullanıcıları istiyorum not to be able to register a username that resembles their email adress. E-posta adresi user@domain.com edemez kimse ile kullanıcı veya us.er, vb olarak kayıt

Örneğin ben bu mümkün değil istiyorum:

tester -> tester@mydomain.com (wrong) tes.ter -> tester@mydomain.com (wrong) etc.

Ama şu kullanabilmek için istiyorum:

tester6 -> tester@mydomain.com (good) etc.

//edit tester6 is wrong too. i ment user6 -> tester@mydomain.com (good).

Herkes bir bunu başarmak için nasıl bir fikir, ya da mümkün olduğunca yakın bir şey var mı. Ben javascript bu kontrol ve php sunucuda sonra duyuyorum.

Ciao!

ps. Belki de bunun için bazı jquery eklentisi var, ben şimdiye kadar bu bulamıyorum. Bunun için bir eklenti kullanmanın dezavantajı Tho, php aynı uygulamak zorunda olduğunu. Uzun bir eklenti varsa o çevirmek için biraz zaman alacak.

//Edit again If i only check the part before the @ they can still use userhotmailcom, or usergmail, etc. If they supply that there email is abvious.

4 Cevap

Tipik olarak, bir şifre giriş gibi görünüyor olmadığını kontrol etmek için Levenshtein distance algoritması kullanır.

PHP a native levenshtein function ve here is one written in JavaScript vardır.

Bu böyle bir şey?

var charsRe = /[.+]/g; // Add your characters here
if (username.replace(charsRe,  '') == email.split('@')[0].replace(charsRe, ''))
    doError();

İstediğiniz tüm yalnızca dönemleri ile e-posta adresi değişir kullanıcı adlarını izin vermemek için ise (.), kullanıcı adından dönemleri kaldırmak ve e-posta adresi ile mukayese edebilirsiniz.

//I don't know php - translating this pseudo code won't be hard

$email = "someone@something.com"
$emailname = $email.substring(0, $email.indexOf('@'));
$uname = "som.e.on.e";
$uname = $uname.replace(/\./g, "");//regex matching a '.' globally

if($uname === $emailname)
  showInvalidNameErrorMessage();

Tire ve altçizgi önlemek için modifiye regex /[\-._]/g

Eh, ben bir acemi PHP geliştiricisi duyuyorum. Ama aklımda var cevabı sadece onları (başkalarıyla paylaşılmayacak) e-posta adresi ile üye olmak sadece izin ve sonra ayrı ayrı kendi ad ve soyadı için sorarsanız harika olmaz, ve ancak kamu içeriği (yani Bloglar, vb) içinde ilk adını gösterir. Ben programlama bir uzman değilim ve ben yanlışım varsa beni düzeltin lütfen ve yine senin için güvenlik tarafından ne anlayamadık. Kötü İngilizce için üzgünüm, anadili İngilizce değilim.