میخوایم یک اسکریپت php بنویسیم که یک url بزرگ و طولانی را تبدیل به یک لینک کوتاه و مختصر کند .
https://t.me/IR_PHP_Developers_Community
https://t.me/IR_PHP_Dev_Community_channel
برای شروع کار یک کلاس به اسم ShortCode می سازیم و دوتا تابع داخلش قرار می دهیم .
class ShortCode { function Create() { $step1 = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" $step2 = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" $step3 = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" $step4 = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" $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 "db_connect.php" $sql = "INSERT INTO links(url,shortcode)VALUE(:url,:shortcode)" $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) .
بعد از اون کدهای اتصال به دیتابیس را به صورت زیر می نویسیم .
<?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="site-section bg-light" id="contact-section"> <div class="container"> <div class="row justify-content-center"> <div class="col-md-7"> <div class="pt-5"> <div class="comment-form-wrap pt-5"> <h3 style="text-align: center;" class="mb-5">کوتاه کننده لینک </h3> <form method="POST" class="p-5 bg-light"> <div class="form-group"> انجمن php ایران <br> <br> <p style="text-align: left;">tel : @IR_PHP_Dev_Community_channel</p> </div> <div class="form-group"> <label for="name">لطفا لینک خود را وارد کنید .</label> <input required type="text" dir="ltr" name="url" class="form-control" id="name"> </div> <div class="form-group"> <input type="submit" name="ok" value="دریافت نتیجه" class="btn btn-primary"> </div> </form> </div> </div> </div> </div> </div> </div>
و حالا کدهای php برای ارسال درخواست
<?php include("controller.php"); $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 "db_connect.php" $get = $_GET['v']; $sql = "SELECT * FROM links WHERE shortcode = '$get'" $query = $DB->prepare($sql); $query->execute(); $links = $query->fetch(); $link = $links['url']; header('Location:'.$link);
پیروز و موفق باشید .
مهدی مومنی
https://t.me/IR_PHP_Developers_Community
https://t.me/IR_PHP_Dev_Community_channel