При sms рассылках важен размер ссылки, которая будет в тексте сообщения.
В базе данных создается отдельная таблица для хранения короткого урла, и соответствующего ему длинного.
В данную таблицу происходит запись по определенному событию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function generateRandomString($length = 3) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[random_int(0, $charactersLength - 1)]; } return $randomString; } $short_url = generateRandomString(); global $wpdb; $table_name = $wpdb->prefix.'urls'; $data = ['url' => $long_url, 'short_url' => $short_url]; $wpdb->insert($table_name, $data); |
Для обработки укороченной ссылки создается специальный файл short.php со следующим кодом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php include( 'wp-load.php' ); global $wpdb; $table_name = $wpdb->prefix.'urls'; $short_url = $_GET['c']; $result = $wpdb->get_results ( " SELECT url FROM $table_name WHERE short_url = '$short_url' " ); $long_url = ''; if($result){ foreach($result as $item){ $long_url = $item->url; } } header('location: '.$long_url); ?> |
В смс будет урл содержащие short.php?c=code Тут с помощью GET параметра ‘c’ передается идентификатор короткой строки, по которому будет делаться запрос в БД и получаться соответствующая ему длинная строка.
После получения делается редирект с короткой ссылки на длинную