mattmezza / shrtnr
您超级简单快速的私有 goo·gl/bit·ly 系统,可以私有托管在您想要的地方,完全不受前端限制。
0.0.4
2018-04-19 13:14 UTC
Requires
- php: ^7.0
Requires (Dev)
- phpunit/phpunit: ^7.0
- vlucas/phpdotenv: ^2.4
This package is auto-updated.
Last update: 2024-09-17 10:22:26 UTC
README
您超级简单快速的私有 goo·gl/bit·ly 系统,可以私有托管在您想要的地方,完全不受前端限制。
安装
composer require mattmezza/shrtnr
- 定义所需的 env 变量并设置数据库(见下文)
使用方法
Shrtnr
类提供了一个非常简单的 API
shrtn(string $from, string $ip = null) : string
-> 给定一个 URI,返回匹配from
字段的目标 URL(如果传递的 URI 没有关联的规则,则抛出NoRuleException
)
可以这样使用(在这个例子中,我们将查询字符串转发到目标 URL)
$both = explode("?", $_SERVER["REQUEST_URI"]); $uri = $both[0]; $shrtnr = new Shrtnr(); try { $to = $shrtnr->shrtn($uri); if (count($both) > 1) { $to .= "?" . $_SERVER["QUERY_STRING"]; } header("Location: $to"); } catch (NoRuleException $e) { die($e->getMessage()); }
管理员使用方法
要添加、编辑、删除和搜索点击和规则,您可以查看暴露 CRUD 操作方法的 DAOs Clicks
和 Rules
。
数据库
shrtnr
使用三个 ENV 变量连接到数据库:DB
是 DSN(例如 mysql:host=127.0.0.1;dbname=shrtnr
),DB_USER
和 DB_PASS
分别用于数据库用户和密码。
数据库本身应按以下方式构建
CREATE TABLE IF NOT EXISTS `clicks` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `rule_id` int(11) unsigned NOT NULL, `clicked_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `from` varchar(256) NOT NULL DEFAULT '', `to` varchar(256) NOT NULL DEFAULT '', `ip` varchar(16) DEFAULT NULL, PRIMARY KEY (`id`), KEY `rule_id` (`rule_id`), CONSTRAINT `clicks_ibfk_1` FOREIGN KEY (`rule_id`) REFERENCES `rules` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `rules` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `user_id` varchar(256) DEFAULT NULL, `from` varchar(256) NOT NULL, `to` varchar(256) NOT NULL, `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `enabled` tinyint(1) NOT NULL DEFAULT '1', `modified_at` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `from` (`from`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
实体
shrtnr
与两个主要实体一起工作:Rule
和 Click
。
规则
它是指导系统针对特定 URI 应做什么的规则。它包含有关匹配 URI 和目标 URL 的信息。还有一个字段 user_id
,它应该报告创建规则的用户的 ID(可以是字符串或数字 ID)。
点击
它代表一个应用的规则,当某人访问 URI 并被重定向到匹配的目标时创建。它报告有关 IP 地址的信息,并引用应用的规则。
开发
git clone https://github.com/mattmezza/shrtnr.git
cd shrtnr
- 定义
DB
、DB_USER
、DB_PASS
env 变量 composer migrate
composer test