有110人阅读过
自建短链服务
发布于2024/01/23 更新于2024/01/23
[ 教程仅保证更新时有效,请自行测试。]
发布于2024/01/23 更新于2024/01/23
[ 教程仅保证更新时有效,请自行测试。]
[ 教程仅保证更新时有效,请自行测试。]
此办法不算成熟,适合轻度使用,请谨慎考虑。
原理,
获取输入框中的地址,对非英文字符进行url编码后,写入一个index.html文件中,
访问此index文件立即跳转至原地址,
此文件保存在一个随机字符为名的文件夹中,
访问此文件夹,即指向该文件夹中的index.html,
最终实现:域名(:端口)/s/xxxxxxxxx的效果
文件:index.rar
食用方法,解压文件,上传到准备做短链服务的目录内,给http读写权限即可。
代码如下:
<!-- 输入框,用于输入org_url --> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> <label for="org_url">输入原链接:</label> <input type="text" name="org_url" id="org_url" required> <button type="submit">生成短链接</button> </form> <?php // 检查是否提交了表单 if ($_SERVER["REQUEST_METHOD"] == "POST") { // 从表单中获取org_url的值 $org_url = $_POST['org_url']; // 获取当前网页的协议 $protocol = isset($_SERVER['HTTP_X_FORWARDED_PROTO']) ? $_SERVER['HTTP_X_FORWARDED_PROTO'] : (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http'); // 获取当前网页的域名 $domain = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $_SERVER['HTTP_HOST']; // 生成并显示短链接 $short_link = createShortLink($org_url); echo "" .$protocol . '://' .$domain . '/s/' . $short_link; } // 剩余的原始代码(不包括直接输出短链接的部分) function generateRandomString($length = 8) { $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, strlen($characters) - 1)]; } return $randomString; } function encodeNonEnglishChars($org_url) { $encoded_org_url = ''; $length = mb_strlen($org_url, 'UTF-8'); for ($i = 0; $i < $length; $i++) { $char = mb_substr($org_url, $i, 1, 'UTF-8'); if (mb_ord($char, 'UTF-8') > 127) { // 对非英文字符进行urlencode $encoded_org_url .= rawurlencode($char); } else { // 英文字符保持不变 $encoded_org_url .= $char; } } return $encoded_org_url; } function createShortLink($org_url) { $short_link = generateRandomString(); $short_url_dir = 's'; $short_link_dir = 's/' . $short_link . '/'; // 更新目录结构 // 创建目录 if (!file_exists($short_url_dir)) { mkdir($short_url_dir, 0777, true); } // 创建短链目录 mkdir($short_link_dir, 0777, true); // 对org_url进行URL编码(仅对非英文字符) $encoded_org_url = encodeNonEnglishChars($org_url); // 修改生成的HTML文件 $html_content = '<html><head><script>window.onload = function() { window.location.href = "' . $encoded_org_url . '"; }</script></head><body></body></html>'; // 输出生成的HTML内容,用于调试 //echo $html_content; // 将HTML内容写入文件 file_put_contents($short_link_dir . 'index.html', $html_content); return $short_link; } ?>
文章对你有帮助吗?
- 一般[0]
- 很赞[0]
- 没用[0]
- 垃圾[0]
- 无语[0]