D: - tinyurl API Örnek ben doğru yapıyor muyum

5 Cevap php

bizim Uygulama yeni Kullanıcılar Kayıt için süper-uzun sağlamalarını kullanın. Bağlantılar kullanılamaz hale - Problem bu sağlamalarını bazı e-posta istemcileri kırmak olduğunu.

Ben TinyURL uygulama çalıştı - API, basit bir çağrı ile, ama bazen dışarı ... bazen posta kullanıcı bulmuyor kez düşünüyorum.

Ben Kodunu güncellenen, ama şimdi URL dönüştürülür asla. Tinyurl çok yavaş gerçekten yoksa ben yanlış bir şey yapıyorum? (Yani, hey, 5 Saniye bu Times kadar)

Herkes bana daha güvenilir bir hizmet tavsiye edebilir misiniz?

Bütün Arıza, fopen bir yanlış unuttum. Ben sık sık bu örneği görmek çünkü Ama ben çok güvenilir çalışmıyor düşünüyorum wich, burada bu kod örnek bırakacaktır:

return file_get_contents('http://tinyurl.com/api-create.php?url='.$u);

Bu - i tam çalışma örneği düşünüyorum. Ben Gelişmeler duymak isterim.

static function gettinyurl( $url ) {

    $context =
        stream_context_create(
            array(
                'http' => array(
                    'timeout' => 5  // 5 Seconds should be enough
                )
            )
        );

    // get tiny url via api-create.php
    $fp = fopen( 'http://tinyurl.com/api-create.php?url='.$url, 'r', $context); // open (read) api-create.php with long url as get parameter

    if( $fp ) { // check if open was ok
        $tinyurl = fgets( $fp ); // read response

        if( $tinyurl && !empty($tinyurl) ) // check if response is ok
            $url = $tinyurl; // set response as url

        fclose( $fp ); // close connection
    }

    // return
    return $url; // return (tiny) url

}

5 Cevap

Sen url parametresi için urlencode() kullanmak isteyebilirsiniz.

Bu fgets() false karşı denetlemek için de tavsiye edilir. Sonra, sizin gibi, sadece boş bir dizeye yanıtı karşılaştırarak empty() işlev çağrısı kurtarabilir:

$line = fgets($fp);

if ($line !== false && $line !== '') {
    // ...
}

Fonksiyonu gibi integer veya boolean gibi farklı değerler döndürür Genel olarak, false ilk karşı her şey kontrol edilmesi tavsiye edilmektedir. false karşılaştırmalarda aynı anlama 0 çünkü bu önemli olabilir. Çünkü tip güvenliği için PHP'nin eksikliği, şiddetle her zaman tipi eşitlik kontrol etmek için tavsiye edilir. Dokümantasyon, örneğin, açıkça bu önerir bile durumlar vardır durumunda strpos(). Bu arada, ben `! = 'Vb daha yazarak gerektirir için aynı, === == üzerinde kullanmak için kendimi mecbur ettik ama mümkün tuzaklar ortadan kaldırmak için kesinlikle çabaya değer .

Kodunuzu kalanı bana iyi görünüyor.

Sen bit.ly servisi deneyebilirsiniz. Ben biliyorum gibi google tarafından desteklenen.

Api

Ben karma tam olarak ne kadar süreceğini bilmiyorum, ama tüm hizmetleri (tarayıcılar, sunucular vb) 255 karakterden daha uzun URL'leri işleyebilir. Sen php's Pack() içine bakmak olabilir

güzel bir çözüm, ve ilki gerçekten bir korku: D

Hemen 7-8 karakter tinyurl için kısalma ise, bir "süper-uzun hash" kullanarak nokta nedir?

Kimse uzun karma tahmin rahatsız olur ve bunun yerine TinyURL çatlak olur.

Şimdi olduğundan daha Use a 10-character hash yourself and be more güvenli.