| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | <?phpnamespace Short\Lib;use Dever;class Handle{    public function get($type, $url, $param, $host = '')    {        $param = json_encode($param);        $where['type'] = $type;        $type = Dever::db('short/type')->one($type);        $where['key'] = md5($url . '?' . $param);        $info = Dever::db('short/info')->one($where);        if ($info) {            $id = $info['id'];        } else {            $where['url'] = $url;            $where['param'] = $param;            $id = Dever::db('short/info')->insert($where);        }        if ($host) {            $type['host'] = $host;        }        return $type['host'] . Dever::uid($id);    }    public function show($str)    {        $id = Dever::uid($str, 'decode');        if ($id && $id > 0) {            $info = Dever::db('short/info')->one($id);            if ($info && $info['url']) {                if ($info['param']) {                    $param = Dever::json_decode($info['param']);                    if ($param) {                        foreach ($param as $k => $v) {                            if (strstr($v, '|')) {                                $temp = explode('|', $v);                                $v = Dever::load($temp[1], $temp[0]);                                $param[$k] = $v;                            }                        }                        if (strstr($info['url'], '?')) {                            $info['url'] .= '&' . http_build_query($param);                        } else {                            $info['url'] .= '?' . http_build_query($param);                        }                    }                }                                Dever::location($info['url']);            }        }        return 'error';    }}
 |