مهدی مومنی
مهدی مومنی
خواندن ۱ دقیقه·۳ سال پیش

ساخت کوتاه کننده لینک با php

به نام خدا

میخوایم یک اسکریپت php بنویسیم که یک url بزرگ و طولانی را تبدیل به یک لینک کوتاه و مختصر کند .



برای پرسیدن سوال های php خود و حل مشکلاتتان به گروه انجمن php ایران بپیوندید .

https://t.me/IR_PHP_Developers_Community

کانال انجمن :

https://t.me/IR_PHP_Dev_Community_channel


برای شروع کار یک کلاس به اسم ShortCode می سازیم و دوتا تابع داخلش قرار می دهیم .


class ShortCode { function Create() { $step1 = &quotAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz&quot $step2 = &quotAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz&quot $step3 = &quotAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz&quot $step4 = &quotAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz&quot $rand1 = substr(str_shuffle($step1),0,2); $rand2 = substr(str_shuffle($step2),0,1); $rand3 = substr(str_shuffle($step3),0,1); $rand4 = substr(str_shuffle($step4),0,2); $output = $rand1.$rand2.$rand3.$rand4; return $output; } function Insert($url, $shortcode) { include &quotdb_connect.php&quot $sql   = &quotINSERT INTO links(url,shortcode)VALUE(:url,:shortcode)&quot $query = $DB->prepare($sql); $query->bindParam(':url', $url, PDO::PARAM_STR); $query->bindParam(':shortcode', $shortcode, PDO::PARAM_STR); $query->execute(); }}

تابع اول کارش اینه که بیاد به صورت رندوم یک string شش حرفی بسازه تا ازش به عنوان لینک کوتاه استفاده کنیم .

تابع دوم دوتا آرگومان دریافت می کنه آرگومان اول همون (url) یا لینک طولانی ماست و آرگومان دوم همون مقدار خروجی تابع اول یعنی یک string شش حرفی است .


حالا باید یک دیتابیس بسازیم به اسم shortcode و بعد یک جدول برای لینک ها توی دیتابیس بسازیم به اسم links و سه تا فیلد داخلش قرار بدیم به اسم های (id) و (url) و (shortcode) .

link table
link table


بعد از اون کدهای اتصال به دیتابیس را به صورت زیر می نویسیم .

Data Base Connect
Data Base Connect



<?php define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PASS', 'mysql'); define('DB_NAME', 'shortcode'); try{ $DB = new PDO('mysql:host=' . DB_HOST .';dbname=' . DB_NAME, DB_USER, DB_PASS); $DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $error){ echo $error->getMessage(); }


حالا نوبت میرسه به نوشتن کدهای صفحه index :


یک فرم می سازیم که بیاد لینک طولانی رو از کاربر بگیره

<div class=&quotsite-section bg-light&quot id=&quotcontact-section&quot> <div class=&quotcontainer&quot> <div class=&quotrow justify-content-center&quot> <div class=&quotcol-md-7&quot> <div class=&quotpt-5&quot> <div class=&quotcomment-form-wrap pt-5&quot> <h3 style=&quottext-align: center;&quot class=&quotmb-5&quot>کوتاه کننده لینک </h3> <form method=&quotPOST&quot class=&quotp-5 bg-light&quot> <div class=&quotform-group&quot> انجمن php ایران <br> <br> <p style=&quottext-align: left;&quot>tel : @IR_PHP_Dev_Community_channel</p> </div> <div class=&quotform-group&quot> <label for=&quotname&quot>لطفا لینک خود را وارد کنید .</label> <input required type=&quottext&quot dir=&quotltr&quot name=&quoturl&quot class=&quotform-control&quot id=&quotname&quot> </div> <div class=&quotform-group&quot> <input type=&quotsubmit&quot name=&quotok&quot value=&quotدریافت نتیجه&quot class=&quotbtn btn-primary&quot> </div> </form> </div> </div> </div> </div> </div> </div>


و حالا کدهای php برای ارسال درخواست

<?php include(&quotcontroller.php&quot); $ShortCode = new ShortCode; if (isset($_POST['ok'])) { $url = $_POST['url']; $NewShortCode = $ShortCode->Create(); $ShortCode->Insert($url, $NewShortCode); } ?>


و بعد از اون نوبت به نمایش لینک کوتاه جدید میرسه

localhost/short url/header.php?v=<?php echo $NewShortCode ?>


حالا برای هدایت صفحه باید یک فایل به اسم header.php بسازیم و کد های زیر را داخلش قرار بدیم


<?php include &quotdb_connect.php&quot $get = $_GET['v']; $sql = &quotSELECT * FROM links WHERE shortcode = '$get'&quot $query = $DB->prepare($sql); $query->execute(); $links = $query->fetch(); $link = $links['url']; header('Location:'.$link);


پیروز و موفق باشید .

مهدی مومنی


برای پرسیدن سوال های php خود و حل مشکلاتتان به گروه انجمن php ایران بپیوندید .

https://t.me/IR_PHP_Developers_Community

کانال انجمن :

https://t.me/IR_PHP_Dev_Community_channel


phpprogrammingprogrammerبرنامه نویسبرنامه نویسی
مهدی مومنی هستم علاقه مند به برنامه نویسی وب ، بیشتر از دو سال که python و django کار می کنم و دوست دارم چیز هایی که یاد میگیرم را با بقیه به اشتراک بزارم .... وبسایت شخصی من https://mahdimomeni.ir
شاید از این پست‌ها خوشتان بیاید