• 09-09-2010, 00:53:46
    #1
    Üyeliği durduruldu
    script hakkında konu https://www.r10.net/ucretsiz-scriptle...ks-v0-1-a.html

    demo adresi http://internetdestek.net/link/index.php

    <?
    $karakterler="0,1,2,3,4,5,6,7,8,9,q,w,e,r,t,y,u,o,p,i,l,k,j,h,g,f,d,s,a,z,x,c,v,b,n,m,Q,W,E,R,T,Y,U,I,O,P,L,K,J,H,G,F,D,S,A,Z,X,C,V,B,N,M,-,_,+"; 
    $dizi = explode(',',$karakterler);
    
    function bul($deger,$dizim)
    {
    
    /*
    Link kısaltma fonksiyonu
    iletişim : admin[@]ucretsizyazilim.com
    */
        $chars = preg_split('//', $deger, -1, PREG_SPLIT_NO_EMPTY);
        $sayisi=count($chars);
    
    if($chars[$sayisi-1]<>"+")
        {
              for($i=0;$i<count($dizim);$i++)
            {        
                if($chars[$sayisi-1]==$dizim[$i])
                {
                 $chars[$sayisi-1]=$dizim[$i+1];
                  break;
                }
            }
        }
    else
        {
    
        $a=0;
        while($a<>-1)
            {
                if($chars[$sayisi-1-$a]=="+")
                {
                  $chars[$sayisi-1-$a]=0;
                  $a++;              
                }
                else
                {
                      for($i=0;$i<count($dizim);$i++)
                        {        
                            if($chars[$sayisi-1-$a]==$dizim[$i])
                                {
                                    $chars[$sayisi-1-$a]=$dizim[$i+1];
                                    break;
                                }
                        }
                                    if ($a==$sayisi)
                                    {
                                        $chars[]="0";                                
                                    }
                    $a=-1;
                }
                
            }
        }
    
    foreach ($chars as $degisken)
        echo $degisken;
    }
    
    bul("+++0",$dizi);
    
    ?>
    Fonksiyon 0-9, a-z, A-Z, ve _,-,+ karakterlerinden oluşan sayı sistemidir.

    Basitçe 2 lik sayı sistemi 0,1 den
    10 luk sayı sistemi 0,1,2...,9 dan
    16 lık sayı sistemi 1,2,3,.....,D,E,F DEN oluşur.

    Bu yukarıda yazdığım fonksiyondaki sistemde sayı sistemi gibi çalışmaktadır.
    sadece 65 lik sayı sistemi gibi çalışır. Bu sistemi genişlete bilirsiniz bunun için sadece 0 başta + sonda olmak üzere istediğin kadar karakteri ,virgül ile karakter dizisinin ortasına bir yere ekleyebilirsiniz.

    Çalışma sistemi çok basit mesela birisi sitenizde ilk linki kısalttı ve adresi

    site.com/0 oldu.

    ikinci linki ekleyen kişide sadece fonksiyonu çalıştırmanız yeterli oluyor.

    bul("0",$dizi); // şeklinde

    buradaki 0 (sıfır) bir önceki numaradır.

    Yani bul("enSonKisaltilanLinkAdresi",$karakterdizinizin Adi); şeklinde çalışıyor. iyi link kısaltmalar.

    Önemli Not: Sakın diziye aynı karakter eklemeyin yoksa hatalı çalışır. Mesela iki kere x yazmayınyada iki kere Q yazmayın.

    karakterleri a,b,c,d diye sıralarsanız harf sırasına da koymuş olursunuz ben rast gele yazmıştım karakterleri.

    Edit: Scripti hazırladım yukarıdaki linkten kontrol edebilirsiniz.
  • 09-09-2010, 01:40:00
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arap olayım emi. (:
  • 09-09-2010, 03:28:28
    #3
    Hocam eline sağlık ama çok karışık olmuş. Geliştirmek, değiştirmek isteyen biri için çözmesi bile belki saatler alır. Ben de kendi yazdığımı paylaşayım.

    // Link kısaltma fonksiyonu, Hkan @ r10.net (biggboss35@gmail.com)
    function shortenLink($q, $l = 5)
    {
    	$uc = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; // uc = usable chars;
    	
    	$return = '';
    	for($i=0; $i < $l; ++$i)
    	{
    		$return .= $uc[rand(0, strlen($uc)-1)];
    	}
    
    	// MySQL controls
    	$check = mysql_query("SELECT `abbr` FROM `link` WHERE `abbr` = '$return'");
    	
    	if($check && mysql_num_rows($check) > 0)
    		return shortenLink($q, $l);
    	elseif($check || @mysql_num_rows($check) == 0)
    		$newLink = mysql_query("INSERT INTO link (`abbr`, `to`) VALUES ('$return', '$q')");
    	// MySQL controls - end
    
    	return $return;
    }
    Çalışma mantığı ve kullanımı:
    • shortenLink('http://site.com', '7') şeklinde kullanılabilir. 7 ibaresi oluşturulacak kısa bağlantının uzunluğunu belirler. Dilerseniz yazmayabilirsiniz.
    • Fonksiyon önce kullanılabilr karakterleri tanımlar.
    • return isimli boş bir değişken oluşturur.
    • For döngüsüyle 1'den başlayarak (PHP'de ilk sayı 0'dır. Döngüde bu yüzden $i = 0 yazıyor.) belirtilen uzunluğa ulaşana kadar return değişkenine rastgele bir karakter ekler.
    • Oluşturulan return değişkeninin daha önce kaydedilmiş olup olmadığına bakar, eğer varsa işlemi en baştan tekrarlar.
    • Son olarak kullanılmamış bir kısaltma bulduğunda bunu veritabanına kaydeder ve değeri döndürür.
    • Öneri: Veritabanı kullanmak istemezseniz 2 // MySQL controls etiketi arasındaki kodları silmeniz yeterli olur.

      MySQL Yapısı:
      +----+----------+-------+------------+
      | id | abbr     | to    | time       |
      +----+----------+-------+------------+
      |    |          |       |            |
      +----+----------+-------+------------+
  • 09-09-2010, 03:30:42
    #4
    pek bişey anlamadım.zaten bnm blog 4 karakter
  • 09-09-2010, 04:03:21
    #5
    Üyeliği durduruldu
    Hkan adlı üyeden alıntı: mesajı görüntüle
    Hocam eline sağlık ama çok karışık olmuş. Geliştirmek, değiştirmek isteyen biri için çözmesi bile belki saatler alır. Ben de kendi yazdığımı paylaşayım.

    // Link kısaltma fonksiyonu, Hkan @ r10.net (biggboss35@gmail.com)
    function shortenLink($q, $l = 5)
    {
        $uc = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; // uc = usable chars;
        
        $return = '';
        for($i=0; $i < $l; ++$i)
        {
            $return .= $uc[rand(0, strlen($uc)-1)];
        }
    
        // MySQL controls
        $check = mysql_query("SELECT `abbr` FROM `link` WHERE `abbr` = '$return'");
        
        if($check && mysql_num_rows($check) > 0)
            return shortenLink($q, $l);
        elseif($check || @mysql_num_rows($check) == 0)
            $newLink = mysql_query("INSERT INTO link (`abbr`, `to`) VALUES ('$return', '$q')");
        // MySQL controls - end
    
        return $return;
    }
    Çalışma mantığı ve kullanımı:
    • shortenLink('http://site.com', '7') şeklinde kullanılabilir. 7 ibaresi oluşturulacak kısa bağlantının uzunluğunu belirler. Dilerseniz yazmayabilirsiniz.
    • Fonksiyon önce kullanılabilr karakterleri tanımlar.
    • return isimli boş bir değişken oluşturur.
    • For döngüsüyle 1'den başlayarak (PHP'de ilk sayı 0'dır. Döngüde bu yüzden $i = 0 yazıyor.) belirtilen uzunluğa ulaşana kadar return değişkenine rastgele bir karakter ekler.
    • Oluşturulan return değişkeninin daha önce kaydedilmiş olup olmadığına bakar, eğer varsa işlemi en baştan tekrarlar.
    • Son olarak kullanılmamış bir kısaltma bulduğunda bunu veritabanına kaydeder ve değeri döndürür.
    • Öneri: Veritabanı kullanmak istemezseniz 2 // MySQL controls etiketi arasındaki kodları silmeniz yeterli olur.

      MySQL Yapısı:
      +----+----------+-------+------------+
      | id | abbr     | to    | time       |
      +----+----------+-------+------------+
      |    |          |       |            |
      +----+----------+-------+------------+
    Peki diyelim shortenLink('http://site.com', '1') şeklinde kullanmaya başladık ve ikinci denemedede aynısı denk geldi. Bunu nasıl kontrol edeceğiz?
  • 09-09-2010, 04:47:14
    #6
    MySQL kullanırsanız gelmez. Alttaki 3 satırda önce ilk oluşturulanı veritabanında sorguluyor kayıtlı mı diye. Eğer 0'dan fazla satır dönerse, yani o kısaltma varsa yeni bir kısaltma oluşturuyor. Hiç oluşturulmamış bir tane gelene kadar sürekli kendini yeniler. Aslında bunu da engellemek gerek. 10 denemeden sonra iptal edip hata vermeli.

    $check = mysql_query("SELECT `abbr` FROM `link` WHERE `abbr` = '$return'");
        
        if($check && mysql_num_rows($check) > 0)
            return shortenLink($q, $l);
  • 09-09-2010, 04:50:40
    #7
    Üyeliği durduruldu
    Kusura bakma hocam, gecenin bir yarısı gözüm yukarılarda aradı sorgu işlemini ne hikmetse çok teşekkürler gözümden kaçmış
  • 09-09-2010, 07:36:56
    #8
    Hkan ne zaman bırakacaksın böyle işleri.
  • 09-09-2010, 09:22:32
    #9
    by_grafitus adlı üyeden alıntı: mesajı görüntüle
    Hkan ne zaman bırakacaksın böyle işleri.
    Böyle işime yaramayacak olan ama birden aklıma gelen şeyleri yapmayı seviyorum. Yazıp arşivime atıyorum. Bu konuda da olduğu gibi mutlaka birine lazım oluyor.