V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
Caringor

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

  •  
  •   Caringor · Aug 26, 2017 · 6428 views
    This topic created in 3178 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

    没有统计功能的短网址服务都是渣,所以我的也是渣^_^
    ctt
        9
    ctt  
       Aug 27, 2017 via iPad
    没有统计功能,所以我就用 html 和几行 js 实现了短地址,就是得多了个#。
    jiujiu5151
        10
    jiujiu5151  
       Aug 27, 2017 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  
       Aug 27, 2017 via Android
    希望增加可以自定义的功能
    doubleflower
        12
    doubleflower  
       Aug 27, 2017 via Android
    现在这个年代,介面应该是移动优先,毕竟大部分人都是用手机打开。参考一下楼下贴的那个 st.im
    akaayy
        13
    akaayy  
       Aug 27, 2017 via Android
    @whatsmyip
    是否开源?
    whatsmyip
        14
    whatsmyip  
       Aug 27, 2017   ❤️ 1
    akaayy
        15
    akaayy  
       Aug 27, 2017 via Android
    @whatsmyip
    能写出来就是牛。

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

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

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

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

    其他的比较容易实现的(自动化)办法,暂时想不到
    whatsmyip
        18
    whatsmyip  
       Aug 27, 2017
    @zjqzxc

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

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

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

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


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