Metin2 Private Serverler, Metin2 Private Serverlar
Would you like to react to this message? Create an account in a few clicks or log in to continue.



 
AnasayfaLatest imagesGiriş yapKayıt Ol

 

 [PAYLAŞIM]Türkçe ID ve Şifre Engelleme %100

Aşağa gitmek 
YazarMesaj
WepMasteR
3.Seviye Üye
3.Seviye Üye
WepMasteR


Cinsiyet : Erkek
Nerden : İzmir
Yaş : 35
Mesaj Sayısı : 56
Başarı : 57000
Rep Gücü : 0

[PAYLAŞIM]Türkçe ID ve Şifre Engelleme %100 Empty
MesajKonu: [PAYLAŞIM]Türkçe ID ve Şifre Engelleme %100   [PAYLAŞIM]Türkçe ID ve Şifre Engelleme %100 I_icon_minitime20/9/2010, 17:33

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 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
Sayfa başına dön Aşağa gitmek
 
[PAYLAŞIM]Türkçe ID ve Şifre Engelleme %100
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» npt engelleme

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
Metin2 Private Serverler, Metin2 Private Serverlar :: Knight Private Serverler :: Prosedür / Kod Paylasımı-
Buraya geçin: