Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) Uyeols10
Bu Foruma yaptığınız ilk ziyaretiniz ise, Lütfen öncelikle Yardım kriterlerini okuyunuz.Forumumuzda bilgi alışverişinde bulunabilmeniz için öncelikle Kayıt olmalısınız.
Üye olmayanlar Forumumuzdan hiçbir şekilde aktivite uygulayamaz, Mesaj yazamaz, Konu açamaz, Eklenti indiremez. Forumumuzu tam anlamıylakullanmak için Üye olabilirsiniz..


Join the forum, it's quick and easy

Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) Uyeols10
Bu Foruma yaptığınız ilk ziyaretiniz ise, Lütfen öncelikle Yardım kriterlerini okuyunuz.Forumumuzda bilgi alışverişinde bulunabilmeniz için öncelikle Kayıt olmalısınız.
Üye olmayanlar Forumumuzdan hiçbir şekilde aktivite uygulayamaz, Mesaj yazamaz, Konu açamaz, Eklenti indiremez. Forumumuzu tam anlamıylakullanmak için Üye olabilirsiniz..
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan)

Aşağa gitmek

Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) Empty Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan)

Mesaj tarafından ReD Ptsi Tem. 19, 2010 7:23 pm

Selamlar,

Kendi Veritabanımda Kullandığım Regex(Regular Expression) Sizinle Paylaşayım Dedim, Baktım Bir Dünya Konu Var..

2 Aşama Göreceksiniz fakat Sadece 1. Aşama da İşinizi Görür, 2. Aşama Sadece Ek Güvenlik Tercihe Bağlı...

Gel Gelelim 1. Aşamayı Uygulayınca Ne Olacak ?

Şöyle Diyeyim "a-Z / 0-9 / _" Karakterleri Sadece ID ve Şifrede Kullanabilir, Kesinlikle Hiç Bir ASCII Karakter ile Oyuna Giremez Tamamiyle %100'dür.

Kullanılabilecek Küçük Harfler : abcdefghijklmnoprstuvyzxwq
Kullanılabilecek Büyük Harfler : ABCDEFGHIJKLMNOPRSTUVYZXWQ
Kullanılabilecek Sayılar : 0123456789
Kullanılabilecek Karakterler : _ (Alttan Tire, Aşağıda İsterseniz Onuda Kaldırabilirsiniz)

Kısacası Mevcutta Kullandığınız RULES v.s. ne Var ise Silin Gitsin, Son Nokta Konulmuştur

1. AŞAMA (Türkçe Karakterin ve Tüm Karakterlerin Tarih Olması) ;

Fonksiyonumuz ;


Kod:
CREATE FUNCTION [dbo].[IsValidCharacters](@SData varchar(8000))
RETURNS INT
AS
/*
Author : AKUMA
Update : 16.10.2009 - 15:30
*/
BEGIN

DECLARE @SDataLen int
DECLARE @Loop int
DECLARE @Letter varchar(1)
DECLARE @RXLetters varchar(8000)
DECLARE @Match tinyint

SET @RXLetters = 'qwertyuopasdfghjklizxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890_'
SET @SDataLen = LEN(@SData)
SET @Loop = 1
SET @Match = 0

WHILE @Loop < (@SDataLen + 1)
BEGIN

SET @Letter = RTRIM(LTRIM(SUBSTRING(@SData,@Loop,1)))

IF CHARINDEX(@Letter,@RXLetters) = 0
BEGIN
SET @Match = 1
BREAK
END

SET @Loop = @Loop + 1
END

RETURN @Match
ENDÖnemli Bilgiler ;

Kod:
-- Aşağıda '.....' Arasına Koyduğunuz Her Karakter Geçerli Karakter Sayılır Örneğin Æ yi Koyarsanız Geçerli Olur, Koymazsanız Geçersiz Olur.

SET @RXLetters = 'qwertyuopasdfghjklizxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890_'Kodun Uygulanması ;
ACCOUNT_LOGIN,ACCOUNT_LOGIS,MAIN_LOGIN veya MYST_LOGIN Ana Logininiz Hangisi ise...


Kod:
CREATE PROCEDURE [dbo].[ACCOUNT_LOGIN]
@AccountID varchar(21),
@Password varchar(13),
@nRet smallint OUTPUT

AS

-- Tam BurayaAS'ın Hemen Altına Şunu Yazıyorsunuz... (Alttan Tire Kullanılabilir Hali.)


Kod:
IF dbo.IsValidCharacters(@AccountID) = 1
BEGIN
SET @nRet = 2 -- Hesap Bulunamadı.
RETURN
END

IF dbo.IsValidCharacters(@Password) = 1
BEGIN
SET @nRet = 3 -- Şifreniz Hatalıdır.
RETURN
END2. AŞAMA (EK Güvenlik) : Aynı Anda İki Hesabın Oyuna Girmesine Engeller, Örneğin "aktas" Diye Bir Hesabım Var Benim Biride "aktaş" Açtı fakat Birşekilde Paketleri Editledi ve "aktas" Yapıp Karaktere Girmesini Engellemektedir.

PROC_INSERT_CURRENTUSER'nüzü Açın ve SET @nRet = 1 Yazan Yerin Hemen Üstüne Dikkat Edin Üstüne Altına Değil Alttaki Kodu Yapıştırın ve Kaydedin Bu Kadar.


Kod:
DECLARE @RAccountID char(21)
/*
Author : AKUMA
Update : 26.07.2009 - 22:45
*/
SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID1 = @CharID and strCharID1 IS NOT NULL
SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID2 = @CharID and strCharID2 IS NOT NULL
SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID3 = @CharID and strCharID3 IS NOT NULL

IF @RAccountID IS NULL
BEGIN
SET @nRet = 0
RETURN
END
ELSE IF @RAccountID = ''
BEGIN
SET @nRet = 0
RETURN
END
ELSE IF @RAccountID <> @AccountID
BEGIN
SET @nRet = 0
RETURN
ENDYapamıyanlar İçin Komple PROC_INSERT_CURRENTUSER (Ekisini Silin Bunu Koyun Yerine - Query Any.)

Procedürü Silemiyenler Bu Şekilde Silebilir.


Kod:
DELETE PROC PROC_INSERT_CURRENTUSER
Kod:
CREATE PROCEDURE PROC_INSERT_CURRENTUSER
@AccountID char(21),
@CharID char(21),
@ServerNo int,
@ServerIP char(15),
@ClientIP char(15),
@nRet smallint output
AS
/*
Author : AKUMA
Update : 26.07.2009 - 22:12
*/

INSERT INTO CURRENTUSER (nServerNo, strAccountID, strCharID, strServerIP, strClientIP) VALUES (@ServerNo, @AccountID, @CharID,@ServerIP,@ClientIP)

DECLARE @RAccountID char(21)

SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID1 = @CharID and strCharID1 IS NOT NULL
SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID2 = @CharID and strCharID2 IS NOT NULL
SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID3 = @CharID and strCharID3 IS NOT NULL

IF @RAccountID IS NULL
BEGIN
SET @nRet = 0
RETURN
END
ELSE IF @RAccountID = ''
BEGIN
SET @nRet = 0
RETURN
END
ELSE IF @RAccountID <> @AccountID
BEGIN
SET @nRet = 0
RETURN
END
ELSE
BEGIN
SET @nRet = 1
RETURN
ENDKolay Gelsin...!
ReD
ReD
Forum Kurucusu
Forum Kurucusu

Mesaj Sayısı : 3038
Kayıt tarihi : 23/01/10
Leader Poınt : 11635
Nerden : Nereye =)

https://pvpserver.1talk.net

Sayfa başına dön Aşağa gitmek

Sayfa başına dön

- Similar topics

 
Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz