Pvp Serverler - Ko Pvp Server - Pvp Forum - İp Adresleri - Server Tanıtımı

[PAYLAŞIM]Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) Regist10

Join the forum, it's quick and easy

Pvp Serverler - Ko Pvp Server - Pvp Forum - İp Adresleri - Server Tanıtımı

[PAYLAŞIM]Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) Regist10

Pvp Serverler - Ko Pvp Server - Pvp Forum - İp Adresleri - Server Tanıtımı

Would you like to react to this message? Create an account in a few clicks or log in to continue.

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

    Admin
    Admin
    KoPvp Yönetmen
    KoPvp Yönetmen


    <b>Mesaj Sayısı</b> Mesaj Sayısı : 382
    <b>Konu Sayısı</b> Konu Sayısı : 381
    <b>Nerden</b> Nerden : Nereye =)
    <b>K.O Gücü</b> K.O Gücü : 0
    [PAYLAŞIM]Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) 16c0w7t
    [PAYLAŞIM]Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) 2im3nmu
    [PAYLAŞIM]Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) F4n0vm

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

    Mesaj tarafından Admin C.tesi Tem. 17, 2010 1:27 am

    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 [PAYLAŞIM]Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) Smile

    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 Buraya

    AS'ı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
    END

    2. 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
    END

    Yapamı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
    END

    Kolay Gelsin...!

      Forum Saati Perş. Mayıs 16, 2024 10:28 am