V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Caringor
V2EX  ›  分享创造

可能是一个好用的短地址服务(附源码)

  •  
  •   Caringor · 2017-08-26 17:24:09 +08:00 · 5626 次点击
    这是一个创建于 2644 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直想搭一个自己的短地址服务,奈何懒癌末期拖了好久。最近看见身边的朋友也做了一个,忍不住了就用 PHP 实现了一个简易的轮子。

    相比同类服务,CRZ 拥有简洁的用户界面、无广告、永久免费,且开放网站源码。

    项目地址:https://crz.im/

    Github:https://github.com/Caringor/CRZ.im <-- 可耻地来骗 Star

    31 条回复    2017-08-31 09:58:46 +08:00
    jeffson
        1
    jeffson  
       2017-08-26 18:07:26 +08:00
    UP UP UP
    a570295535
        2
    a570295535  
       2017-08-26 18:58:55 +08:00   ❤️ 1
    很坑啊,你这 https 的链接转换后直接 404 啊 https://crz.im/e7c9
    Caringor
        3
    Caringor  
    OP
       2017-08-26 19:22:32 +08:00 via Android
    @a570295535 伪静态有点问题,回去处理下~
    tSQghkfhTtQt9mtd
        4
    tSQghkfhTtQt9mtd  
       2017-08-26 19:25:20 +08:00 via Android
    继续用 Yourls (
    soeasy
        5
    soeasy  
       2017-08-26 19:28:15 +08:00
    haha~我也来发一个,速跳短网址: https://st.im/
    SaoHangBaBa
        6
    SaoHangBaBa  
       2017-08-26 19:53:41 +08:00
    Bug 休好了,记得通知我。。。。
    lzhr
        7
    lzhr  
       2017-08-26 20:01:29 +08:00
    可以自定义吗
    whatsmyip
        8
    whatsmyip  
       2017-08-26 23:57:09 +08:00
    http://s.newnius.com/

    没有统计功能的短网址服务都是渣,所以我的也是渣^_^
    ctt
        9
    ctt  
       2017-08-27 00:21:41 +08:00 via iPad
    没有统计功能,所以我就用 html 和几行 js 实现了短地址,就是得多了个#。
    jiujiu5151
        10
    jiujiu5151  
       2017-08-27 00:49:59 +08:00 via Android   ❤️ 1
    想看下短网址的生成算法,结果那类里的方法:
    // 清空短地址
    public function clean_urls() {
    $del = $this->db->delete('urls');
    if($del) return true;
    return false;
    }

    是不是可以直接 return (bool) $this->db->delete('urls');

    还有上面几个方法,已经使用三元运算符,也是可以直接 return
    akaayy
        11
    akaayy  
       2017-08-27 01:22:29 +08:00 via Android
    希望增加可以自定义的功能
    doubleflower
        12
    doubleflower  
       2017-08-27 07:55:13 +08:00 via Android
    现在这个年代,介面应该是移动优先,毕竟大部分人都是用手机打开。参考一下楼下贴的那个 st.im
    akaayy
        13
    akaayy  
       2017-08-27 09:15:30 +08:00 via Android
    @whatsmyip
    是否开源?
    whatsmyip
        14
    whatsmyip  
       2017-08-27 09:22:40 +08:00   ❤️ 1
    akaayy
        15
    akaayy  
       2017-08-27 09:35:21 +08:00 via Android
    @whatsmyip
    能写出来就是牛。

    我还想问你和楼上做短网址的各位,怎么避免被恶意利用?
    我原来也用 yourls 做了一个短网址站,但是过了一段时间被 qq 列入了危险名单,到后台一看果然有很多乱七八糟的地址。吓得赶紧关了。

    求应付方法?
    zjqzxc
        16
    zjqzxc  
       2017-08-27 09:41:26 +08:00
    @whatsmyip 第一眼看过去看到了 redis 字样,准备看看你的缓存淘汰算法用的啥。。。看了半天才发现没写完
    话说,random.php 里,为啥要自己写个 randomInt,rand()函数有啥问题么?
    whatsmyip
        17
    whatsmyip  
       2017-08-27 09:44:09 +08:00
    @akaayy
    我的也被用于过 1024,不过使用的人比较少

    短网址确实存在滥用的情况,所以打算下一版本切换域名。

    真要防这个,也不是没有办法。
    一个就是参考 bat 的短网址服务,设置域名白名单
    另外一个是,封掉 qq 的 robot ( UA 等,分析日志吧)

    其他的比较容易实现的(自动化)办法,暂时想不到
    whatsmyip
        18
    whatsmyip  
       2017-08-27 09:47:11 +08:00
    @zjqzxc

    额,确实没用上缓存,比较简陋。redis 是用来防 spam 的。。。

    好久以前写的了,这个应该是生成 unique 串的,rand 冲突可能性比较高吧。
    KWPr0
        19
    KWPr0  
       2017-08-27 11:37:30 +08:00
    厚着脸皮放上自己搞的破烂 301.tn
    lengxx
        20
    lengxx  
       2017-08-27 11:39:47 +08:00
    点击后并没有生成短地址,什么都没发生。。
    Caringor
        21
    Caringor  
    OP
       2017-08-27 11:57:25 +08:00
    @SaoHangBaBa @a570295535 很抱歉昨天没什么时间处理,今天把问题修好了。

    @lengxx 刚刚在改 Nginx 的配置,现在应该好了。

    @doubleflower 这个之后会改进的。
    rogwan
        22
    rogwan  
       2017-08-27 12:28:51 +08:00 via Android
    这个 4 位短网址,重复率高,不是很快就失效啊
    Marfal
        23
    Marfal  
       2017-08-27 12:43:07 +08:00 via Android
    不考虑 Redis ?
    hxsf
        24
    hxsf  
       2017-08-27 13:16:50 +08:00
    另外,貌似没看见过期之类相关的代码啊,没考虑么?
    DlYgod
        25
    DlYgod  
       2017-08-27 13:31:59 +08:00   ❤️ 1
    千岁姐姐好棒!
    Caringor
        26
    Caringor  
    OP
       2017-08-27 17:22:05 +08:00 via Android
    @rogwan 其实可以通过修改配置文件把 ID 拓展到八位,暂时觉得四位够用了。
    Caringor
        27
    Caringor  
    OP
       2017-08-27 17:25:36 +08:00 via Android
    @hxsf 嗯,没考虑,打算做永久的。


    @Marfal SQLite 没必要配合 Redis 吧感觉…
    hxsf
        28
    hxsf  
       2017-08-27 17:32:24 +08:00
    @Caringor #27 永久? 无限的输入对应 有限的输出,迟早用完的吧。
    xspoco
        29
    xspoco  
       2017-08-28 00:00:28 +08:00
    好像不适配移动端?
    majiawei
        30
    majiawei  
       2017-08-30 16:39:34 +08:00
    一年多以前写了一个,公司内部用的,最开始的版本的功能跟你这个差不多,但后面实际用起来,优化了不少东西,主要都是数据的记录,从单纯的读写 MySQL 到后面的 Redis 缓存,数据方面除了算点击数之外,每个单次点击也会记录具体的日志,后台做了些报表功能,对运维来说这些数据有时候还是很有用的,说了一堆也不知道为什么要说这些哈哈哈哈
    Caringor
        31
    Caringor  
    OP
       2017-08-31 09:58:46 +08:00
    @majiawei 哈哈,想起了那篇做轮子决定午饭去哪家吃的软文了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1662 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 16:50 · PVG 00:50 · LAX 08:50 · JFK 11:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.