سكربت اختصار الروابط من برمجتي اسعد الله اوقاتكم بكل خير
زي ماهو واضح بالعنوان سكربت اختصار روابط مثال عليه :
http://azazah.net/index.php
تحميل سكربت ملف واحد انسخ :
كود PHP:
<?php $params = array(); if ( !empty( $_POST ) ) { $params = array_merge ( $params , $_POST ); } if ( !empty( $_GET ) ) { $params = array_merge ( $params , $_GET ); } $url = $params [ 'url' ]; if ( isset( $params [ 'Go' ] ) ) { $domain = 'http://' . $_SERVER [ 'HTTP_HOST' ]; if ( ! $params [ 'url' ] ) { header ( "location: index.php" ); } else { $folder = generate_folder (); while ( ! is_dir ( $folder ) ) { $folder = generate_folder (); mkdir ( $folder , 0777 ); $file = $folder . '/index.php' ; $handle = fopen ( $file , 'w' ); $http = ( substr ( $_POST [ 'url' ], 0 , 7 ) != 'http://' ? 'http://' . $url : $url ); fwrite ( $handle , '<meta http-equiv="refresh" content="0;url=' . $http . '" />' ); fclose ( $handle ); } echo 'copy your short link <input type="text" size="30" name="url[link]" value="' . $domain . '/' . $folder . '">' ; echo '<br />' ; echo '<a href="index.php">Go To Back</a>' ; exit; } } function generate_folder () { $result = null ; $lowercase = array( 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'x' , 'y' , 'z' ); $uppercase = array( 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'X' , 'Y' , 'Z' ); for ( $i = 0 ; $i <= 2 ; $i ++ ) { $result .= $lowercase [ rand ( 0 , count ( $lowercase ) - 1 )] . $uppercase [ rand ( 0 , count ( $uppercase ) - 1 )]; } return $result ; } ?> <html><title>Short Url</title> <form action="<?php echo $_SERVER [ 'PHP_SELF' ]; ?> " method="POST"> short url <input type="text" name="url" size="30"> <input type="submit" name="Go" value="Go!"> </form></html>
ورفعه باسم index.php ،
وسلام عليكم
10-04-2010, 02:28 PM
وعليكم السلام ورحمة الله وبركاته
ما شاء الله عليك برمجة جميلة
لكن انا عملتها بطريقة اخرى:
الفكرة ان يتم الاستفادة من ال api لمواقع التقصير مثل tinyurl:
وبذلك لا حاجة لقواعد بيانات او انشاء ملفات(كنت ايضًا تستطيع استخدام قواعد sqlite)
هذه دالة مستقاة من دالة كان قد وضعها الاخ bruce
كود PHP:
function tiny ( $link ){ $url = @ file_get_contents ( "http://tinyurl.com/api-create.php?url={$link}" ); return $url ; }
وهي تاتي بالرابط المقصر من موقع tinyUrl
كيف يمكن الاستفادة منها:
نفرض اننا نريد تقصير الرابط التالي:
http://www.swalif.net/softs/
سوف نشغل الدالة وتعطي الناتج
http://tinyurl.com/ 23wnac
والرابط المقصر الخاص بموقعنا سوف يكون بالشكل التالي:
http://localhost/short/ 23wnac
هل فهمت العلاقة؟؟؟
نستخدم ملف htaccess لاعادة التحويل من موقعنا لموقع tinyurl
الذي سيأخدنا للرابط الذي تم تقصيره سابقًا بالطريقة التالية:
كود PHP:
RewriteEngine on RewriteRule ^([ a - zA - Z0 - 9 ]+)$ http : //tinyurl.com/$1 [R,L]
الملف في المرفقات
آخر تعديل بواسطة ahmad sadiq في 12-05-2011 الساعة 01:17 AM .
10-04-2010, 06:07 PM
هذا هو الابداع
جزاكم الله خير
10-04-2010, 06:42 PM
جزاكم الله خيرا..............
10-04-2010, 09:48 PM
تسلم عزيزي جزاك الله خيرا
11-04-2010, 03:24 AM
جزاك الله كل خير يالغالي ع المجهود الرائع
__________________ سبحان الله وبحمده
11-04-2010, 06:38 AM
لا إله إلا الله
#7
جميل جدا ، فقط لا تصلح للمواقع الكبيرة و كثرة الزوار !!
كما قال الاخوة ممكن تحولها الى sqlite .
11-04-2010, 07:25 AM
إقتباس:
المشاركة الأصلية بواسطة
ahmad sadiq وعليكم السلام ورحمة الله وبركاته
ما شاء الله عليك برمجة جميلة
لكن انا عملتها بطريقة اخرى:
الفكرة ان يتم الاستفادة من ال api لمواقع التقصير مثل tinyurl:
وبذلك لا حاجة لقواعد بيانات او انشاء ملفات(كنت ايضًا تستطيع استخدام قواعد sqlite)
هذه دالة مستقاة من دالة كان قد وضعها الاخ bruce كود PHP:
function tiny ( $link ){ $url = @ file_get_contents ( "http://tinyurl.com/api-create.php?url={$link}" ); return $url ; }
وهي تاتي بالرابط المقصر من موقع tinyUrl
كيف يمكن الاستفادة منها:
نفرض اننا نريد تقصير الرابط التالي: http://www.swalif.net/softs/
سوف نشغل الدالة وتعطي الناتج http://tinyurl.com/ 23wnac
والرابط المقصر الخاص بموقعنا سوف يكون بالشكل التالي: http://localhost/short/ 23wnac
هل فهمت العلاقة؟؟؟
نستخدم ملف htaccess لاعادة التحويل من موقعنا لموقع tinyurl
الذي سيأخدنا للرابط الذي تم تقصيره سابقًا بالطريقة التالية: كود PHP:
RewriteEngine on RewriteRule ^([ a - zA - Z0 - 9 ]+)$ http : //tinyurl.com/$1 [R,L]
الملف في المرفقات
هلا والله احلى مافي الموضوع لا ااكواد ولا اسماء الفكره
طريقتك حلوه بس تعتمد علي موقع tinyurl لو بكرا شال عفشه تتوهق
إقتباس:
المشاركة الأصلية بواسطة
rifizm جميل جدا ، فقط لا تصلح للمواقع الكبيرة و كثرة الزوار !!
كما قال الاخوة ممكن تحولها الى sqlite .
ماتصلح للمواقع كبيره تقدر تقول محاوله يعني وبعدين عدلت بالكود اول كل رابط تقصير لازم يعمل له مجلد الحين غيرتها وهذه الي قدرنا عليه والمسئله مو القصد تركبون السكربت تجارب ما تعلمناه
هذه اخر تعديل
كود PHP:
<?php $form = array( 'url' => 'text|30|put your link' ); define ( 'HTTP_HOST' , $_SERVER [ 'HTTP_HOST' ]); define ( 'DOMEN' , 'http://' . HTTP_HOST ); define ( 'PHP_SELF' , $_SERVER [ 'PHP_SELF' ]); $params = params (); function form ( $fields ) { $form = '' ; $form .= '<form action=' . PHP_SELF . ' method="POST">' ; if ( is_array ( $fields ) ) { foreach( $fields as $key => $value ) { $value = explode ( '|' , $value ); $form .= sprintf ( "%s <input type='%s' name='link[%s]' size='%s'>" , $value [ 2 ], $value [ 0 ], $key , $value [ 1 ]); } } $form .= '<input type="submit" name="go" value="Go!">' ; $form .= '</form>' ; return $form ; } function generate_folder () { $result = null ; $lowercase = array( 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'x' , 'y' , 'z' ); $uppercase = array( 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'X' , 'Y' , 'Z' ); for ( $i = 0 ; $i <= 2 ; $i ++ ) { $result .= $lowercase [ rand ( 0 , count ( $lowercase ) - 1 )] . $uppercase [ rand ( 0 , count ( $uppercase ) - 1 )]; } return $result ; } function error_msg ( $vailed , $params ) { $errors = array( 'total_errors' => 1 ); foreach( $vailed as $filed => $vaileds ) { if (! preg_match ( $vaileds , $params [ $filed ] ) ) { $errors [ 'total_erros' ]++; $errors [ $filed ] = true ; } } if ( $errors [ 'total_erros' ] > 0 ) { return $errors ; } else { return false ; } } function params () { $params = array(); if ( !empty( $_POST ) ) { $params = array_merge ( $params , $_POST ); } if ( !empty( $_GET ) ) { $params = array_merge ( $params , $_GET ); } return $params ; } function check_url () { if ( ! $params [ 'url' ] ) { return false ; } else { return true ; } } function create_file () { if ( check_url ) { $folder = generate_folder (); if ( ! check_field () ) { write ( $folder ); } else { print 'error your link' ; echo '<a href="index.php">Go To Back</a>' ; exit(); } echo 'copy your short link <input type="text" size="30" name="url[link]" value="' . DOMEN . '/' . $folder . '.html"><br />' ; echo '<a href="index.php">Go To Back</a>' ; } else { header ( "location: test.php" ); } } function write ( $folder ) { global $params ; $file = $folder . '.html' ; $handle = fopen ( $file , 'w' ); $http = ( substr ( $params [ 'url' ], 0 , 7 ) != 'http://' ? 'http://' . $params [ 'link' ][ 'url' ] : $params [ 'link' ][ 'url' ] ); fwrite ( $handle , '<meta http-equiv="refresh" content="0;url=' . $http . '" />' ); fclose ( $handle ); } function check_field () { $regex = "((https?|ftp)\:\/\/)?" ; // SCHEME $regex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?" ; // User and Pass $regex .= "([a-z0-9-.]*)\.([a-z]{2,3})" ; // Host or IP $regex .= "(\:[0-9]{2,5})?" ; // Port $regex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?" ; // Path $regex .= "(\?[a-z+&\$_.-][a-z0-9;:@&%=+\/\$_.-]*)?" ; // GET Query $regex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?" ; // Anchor global $params ; $links = array( 'url' => "/^$regex$/" ); $urls = array( 'url' => $params [ 'link' ][ 'url' ]); return error_msg ( $links , $urls ); } if ( isset( $params [ 'go' ] ) ) { //print_r( $params['link']); create_file (); } else { echo form ( $form ); } ?>
آخر تعديل بواسطة Abo Naiyf في 11-04-2010 الساعة 03:21 PM .
11-04-2010, 03:20 PM
فكرة بسيطة وحلوة ..
تسلم كثير
__________________
لا اله الا الله . . . محمّد رســول الله
11-04-2010, 03:24 PM
لا إله إلا الله
#10
إقتباس:
المشاركة الأصلية بواسطة
Abo Naiyf ماتصلح للمواقع كبيره تقدر تقول محاوله يعني وبعدين عدلت بالكود اول كل رابط تقصير لازم يعمل له مجلد الحين غيرتها وهذه الي قدرنا عليه والمسئله مو القصد تركبون السكربت تجارب ما تعلمناه
نعم أخي العزيز ، قصدي الطريقة و ليس السكربت ،
ملاحظة :
يمكنك جعل الدالة مثل هذه أو شيئ مشابه لتلافي تكرار أسماء الملفات ،
كود PHP:
function generate_folder () { $result = null ; $lowercase = array( 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'x' , 'y' , 'z' ); $uppercase = array( 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'X' , 'Y' , 'Z' ); for ( $i = 0 ; $i <= 2 ; $i ++ ) { $result .= $lowercase [ rand ( 0 , count ( $lowercase ) - 1 )] . $uppercase [ rand ( 0 , count ( $uppercase ) - 1 )]; } if ( is_file ( $dir . $result . ".html" )){ // $dir هو مسار مجلد السكربت return generate_folder (); }else{ return $result ; } }
طبعا يمكن اعتبار الموضوع مرجع للدوال المستخدمة فيه ،
شكرا لك .
11-04-2010, 04:18 PM