Sunday, April 18, 2010

PHP Function To Retrieve The Original URL From A Shortened URL



هل سألت نفسك يوم كيف يقوم موقع Untiny الذي قام ببرمجته الأخ صالح الزيد علي إلغاء اختصار كل هذه الروابط من مواقع الاختصار المختلفة؟ فبالتأكيد انك قلت لنفسك انة بالتأكيد كتب الكثير من الاكواد او انة يكتب كود خاص لكل موقع اختصار علي حدى .. ولكن دعني اقول لك انك على خطاء فالأمر ليس بكل هذا التعقيد الذي تعتقده.
فكل ما في الأمر هو استخدام دالة get_headers التي تعمل علي قراءة الهيدر الخاص بالرابط والذي يحتوي علي الرابط الذي سوف يتم التوجه إليه ( الرابط الغير مختصر ).
قمت باستخدام الدالة get_headers مع بعض الاكواد الآخرى وأنشأت دالة جديدة تعمل علي استيراد الرابط الاصلي من الرابط المختصر.

الدالة

<?php

function retrieve_shortened_link($shortUrl){

    $headers = get_headers($shortUrl, 1);

    if(is_array($headers['Location'])){

        return $headers['Location'][0];

    }else{

        return $headers['Location'];

    }

}

?>
هذا كل شيء .. ولكن في النهاية اريد ان اوضح إلى انني لم اقم بالإطلاع علي كود المصدر الخاص بموقع untiny لذلك ليس لدي اي دليل ان هذه الطريقة المستخدمة في الموقع ومن يملك التأكيد هو الاخ صالح الزيد ولكن هل قمت بتجربة الدالة ولم تفلح معك ;)

2 comments:

  1. شكرا لك ، طيب هل يجب توفر
    Api
    لصاحب موقع تقصير الروابط حتى تستطيع فك الرابط ؟؟ أم لا ؟

    ReplyDelete
  2. فك الرابط لا يحتاج إلى استخدام الـ API
    ولكن بعض المواقع مثل Bit.ly توفر هذة الامكانية

    ولكن موقع مثل U.nu لا يوفر امكانيات في وجهة برمجة التطبيقات غير امكانية التقصير ولا يوفر فك التقصير!

    لذلك يمكن ان نستخدم معة الدالة السابقة والتي تعمل علي جميع المواقع التي تقوم بتقديم خدمة التقصير والتوجية المباشر إلى الصفحة الاصلية دون المرور بصفحات الدعاية

    لان المرور بصفحات الدعاية يعطل عمل الدالة لعدم وجود الرابط الاصلي في هيدر الرابط المختصر وانما يتواجد في صفحة اخرى، لذلك يجب استخدام بعض الحيل حتى تستطيع ان تحصل على الرابط الاصلي

    ReplyDelete