예제 #1
0
function s_cookie_sup(&$user)
{
    if (s_bad_array($user) || !($conf = s_cookie_conf())) {
        return false;
    }
    $time = s_action_time();
    //begintime
    return "bt=" . strval($time) . "&et=" . strval($time + 7 * 86400) . "&uid=" . $user['id'] . "&nn=" . $user['nickname'] . "&ev=" . $conf[SSOCOOKIE_KEY32_1];
}
예제 #2
0
function s_weibo_list_time($list, $format = "m月d日 H:i", $postfix = "")
{
    if (s_bad_array($list) || s_bad_string($format)) {
        return false;
    }
    foreach ($list as &$item) {
        if (isset($item['time'])) {
            $item['time'] = date($format . $postfix, $item['time']);
        }
        unset($item['fdate']);
        unset($item['ftime']);
        unset($item['status']);
        unset($item);
    }
    return $list;
}
예제 #3
0
function s_live_filter(&$result)
{
    if (s_bad_array($result)) {
        return array();
    }
    $result['error'] = 0;
    if (isset($result['result'])) {
        foreach ($result['result'] as $key => &$value) {
            $result[$key] = $value;
            unset($value);
        }
        unset($result['result']);
    }
    return $result;
}
예제 #4
0
function _s_db_update($table, &$v1, &$v2)
{
    if (s_bad_string($table) || s_bad_array($v1) || s_bad_array($v2) || s_bad_id($v1["id"], $pid)) {
        return s_err_arg("no primary key.");
    }
    if (defined("APP_DB_PREFIX")) {
        //替换表名:"%s_user:update" => "201204disney_user:update"
        $table = sprintf($table, APP_DB_PREFIX, true);
    }
    if (isset($v2["id"])) {
        //防止更新主键
        unset($v2["id"]);
    }
    // 防止有重复的值
    $v2 = array_unique($v2);
    // 对$v1和$v2数据归类
    $values = array();
    foreach ($v2 as $key => $value) {
        if ($v1[$key] == $v2[$key]) {
            continue;
        }
        $values[] = "`{$key}`=" . (is_string($value) ? '"' . s_safe_value($value) . '"' : $value);
    }
    $sql = "update `{$table}` set " . implode(", ", $values) . " where `id`={$pid}";
    return s_db_exec($sql);
}
예제 #5
0
function s_bad_get($key, &$var = false, $type = "string", $html = true)
{
    if (s_bad_string($key) || !isset($_GET[$key])) {
        return true;
    }
    if ($type === "string") {
        //字符类型
        if ($html !== true) {
            //不需要转义,直接返回判断结果
            return s_bad_string($_GET[$key], $var);
        }
        //需要对参数转义处理
        if (true === s_bad_string($_GET[$key], $var)) {
            //不需要转义,因为参数已经验证失败
            return true;
        }
        if ($var !== false) {
            $var = s_safe_html($var);
        }
        //验证成功,此处返回
        return false;
    } else {
        if ($type === "int") {
            //整型
            return s_bad_id($_GET[$key], $var);
        } else {
            if ($type === "int0") {
                return s_bad_0id($_GET[$key], $var);
            } else {
                if ($type === 'array') {
                    return s_bad_array($_GET[$key], $var);
                } else {
                    if ($type === "email") {
                        //邮箱
                        return s_bad_email($_GET[$key], $var);
                    } else {
                        if ($type === "phone" || $type === "telphone") {
                            //手机或电话(只需要验证telphone,因为telphone的规则很松已经包含手机了)
                            return s_bad_telphone($_GET[$key], $var);
                        } else {
                            if ($type === "mobile") {
                                //手机
                                return s_bad_mobile($_GET[$key], $var);
                            }
                        }
                    }
                }
            }
        }
    }
    return true;
}
예제 #6
0
function s_user_sample(&$users)
{
    if (s_bad_array($users)) {
        return false;
    }
    foreach ($users as &$user) {
        $user['id'] = $user['id'];
        $user['name'] = $user['screen_name'];
        $user['purl'] = $user['profile_image_url'];
        $user['wurl'] = $user['profile_url'];
        unset($user);
    }
    return $users;
}
예제 #7
0
function s_weibo_notice(&$uids, $tid, $keys = false, $url = false, $noticeid = false)
{
    if (s_bad_array($uids) || s_bad_string($tid)) {
        return false;
    }
    $_keys = false;
    $_uids = implode(',', $uids);
    if ($keys) {
        $_keys = array_values($keys);
        $_keys = implode('&', $keys);
    }
    $mkey = '!!weibo_notice_by_uids#uids=' . $_uids . 'tid=' . $tid . 'keys=' . $_keys . 'url=' . $url . 'noticeid' . $noticeid;
    if (false === ($data = s_memcache($mkey))) {
        $data = array('uids' => $_uids, 'tpl_id' => $tid);
        if ($url) {
            //如果是有url添加
            $data['action_url'] = $url;
        }
        if ($keys) {
            //合并模板数据
            $data = array_merge($data, $keys);
        }
        if ($noticeid) {
            //通知需要用新的APP_KEY
            $data['_APP_KEY'] = $noticeid;
        }
        if (false === ($data = s_weibo_http('http://api.weibo.com/2/notification/send.json', $data, 'post'))) {
            return s_err_sdk();
        }
        //缓存一小时
        //s_memcache($mkey, $data, 3600);
    }
    return $data;
}
예제 #8
0
function s_bad_post($key, &$var = false, $type = "string", $html = true)
{
    if (s_bad_string($key) || !isset($_POST[$key])) {
        return true;
    }
    if ($type === "string") {
        //字符类型
        if ($html !== true) {
            //不需要转义,直接返回判断结果
            return s_bad_string($_POST[$key], $var);
        }
        //需要对参数转义处理
        if (true === s_bad_string($_POST[$key], $var)) {
            //不需要转义,因为参数已经验证失败
            return true;
        }
        if ($var !== false) {
            $var = s_safe_html($var);
        }
        //验证成功,此处返回
        return false;
    } else {
        if ($type === "int") {
            //整型
            return s_bad_id($_POST[$key], $var);
        } else {
            if ($type === "int0") {
                //整型,可以为0
                return s_bad_0id($_POST[$key], $var);
            } else {
                if ($type === "array") {
                    //数组
                    return s_bad_array($_POST[$key], $var);
                } else {
                    if ($type === "email") {
                        //邮箱
                        return s_bad_email($_POST[$key], $var);
                    } else {
                        if ($type === "phone" || $type === "telphone") {
                            //手机或电话(只需要验证telphone,因为telphone的规则很松已经包含手机了)
                            return s_bad_telphone($_POST[$key], $var);
                        } else {
                            if ($type === "mobile") {
                                //手机
                                return s_bad_mobile($_POST[$key], $var);
                            } else {
                                if ($type === "image") {
                                    //图片(只取request.data中的数据)
                                    if (!isset($GLOBALS["HTTP_RAW_POST_DATA"]) || !$GLOBALS["HTTP_RAW_POST_DATA"]) {
                                        return true;
                                    }
                                    if ($var !== false) {
                                        $var = $GLOBALS["HTTP_RAW_POST_DATA"];
                                    }
                                    return false;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return true;
}
예제 #9
0
function s_bad_post($key, &$var = false, $type = "string", $length = false)
{
    if (s_bad_string($key) || !isset($_POST[$key])) {
        return true;
    }
    if ($type === "string") {
        //字符类型
        return s_bad_string($_POST[$key], $var);
    } else {
        if ($type === "int") {
            //整型
            return s_bad_id($_POST[$key], $var);
        } else {
            if ($type === "int0") {
                //整型,可以为0
                return s_bad_0id($_POST[$key], $var);
            } else {
                if ($type === "array") {
                    //数组
                    return s_bad_array($_POST[$key], $var);
                } else {
                    if ($type === "email") {
                        //邮箱
                        return s_bad_email($_POST[$key], $var);
                    } else {
                        if ($type === "phone" || $type === "telphone") {
                            //手机或电话(只需要验证telphone,因为telphone的规则很松已经包含手机了)
                            return s_bad_telphone($_POST[$key], $var);
                        } else {
                            if ($type === "mobile") {
                                //手机
                                return s_bad_mobile($_POST[$key], $var);
                            } else {
                                if ($type === "image") {
                                    //图片(只取request.data中的数据)
                                    if (!isset($GLOBALS["HTTP_RAW_POST_DATA"]) || !$GLOBALS["HTTP_RAW_POST_DATA"]) {
                                        return true;
                                    }
                                    if ($var !== false) {
                                        $var = $GLOBALS["HTTP_RAW_POST_DATA"];
                                    }
                                    return false;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return true;
}
예제 #10
0
function s_user_reply_comment($weibo)
{
    if (s_bad_array($weibo) || s_bad_id($weibo["id"]) || s_bad_string($weibo["comment"])) {
        return false;
    }
    return s_weibo_http("https://api.weibo.com/2/comments/reply.json", $weibo);
}
예제 #11
0
function s_weibo_detail_by_mid($mid, $key = false)
{
    if (is_string($mid)) {
        //查一个
        $mid = array($mid);
    } else {
        if (is_array($mid)) {
            //查多个
            if (is_string($key)) {
                //是一个联合数组,那么按$key取值
                $list = $mid;
                $mid = array();
                foreach ($list as $item) {
                    if (!s_bad_string($item[$key], $id)) {
                        $mid[] = $id;
                    }
                }
                unset($list);
            }
            $mid = array_unique($mid);
        }
    }
    if (s_bad_array($mid) || false == ($mid = s_weibo_2id_by_mids($mid))) {
        return false;
    }
    //查询所有的微博详情
    $list = array();
    foreach ($mid as $key => $wid) {
        $list[$key] = s_weibo_by_wid($wid);
    }
    return $list;
}
예제 #12
0
function _s_user_friends($uid, $count = 200, $page = 1)
{
    if (s_bad_id($count) || s_bad_id($page)) {
        return s_err_arg();
    }
    if (!s_bad_id($uid)) {
        //微博ID
        $data['uid'] = $uid;
    } else {
        if (!s_bad_string($uid)) {
            //微博昵称
            $data['screen_name'] = $uid;
        }
    }
    $data['count'] = $count > 5000 ? 200 : $count;
    //游标从0开始
    $data['cursor'] = $page - 1;
    $key = "user_followers_by_uid#{$uid}_{$count}_{$page}";
    if (false !== ($users = s_memcache($key))) {
        return $users;
    }
    //缓存中没有,从微博平台中获取
    if (false === ($ret = s_weibo_http("https://api.weibo.com/2/friendships/followers.json", $data)) || s_bad_array($ret['users'])) {
        return false;
    }
    $users = s_user_sample($ret['users']);
    //缓存中存储起来
    s_memcache($key, $users);
    return $users;
}
예제 #13
0
function s_weibo_notice(&$uids, $tid, $keys = false, $url = false, $noticeid = false)
{
    if (s_bad_array($uids) || s_bad_string($tid)) {
        return false;
    }
    $_keys = false;
    $_uids = implode(',', $uids);
    if ($keys) {
        $_keys = array_values($keys);
        $_keys = implode('&', $keys);
    }
    $data = array('uids' => $_uids, 'tpl_id' => $tid);
    if ($url) {
        //如果是有url添加
        $data['action_url'] = $url;
    }
    if ($keys) {
        //合并模板数据
        $data = array_merge($data, $keys);
    }
    if ($noticeid) {
        //通知需要用新的APP_KEY
        $data['_APP_KEY'] = $noticeid;
    }
    if (false === ($data = s_weibo_http('http://i2.api.weibo.com/2/notification/send.json', $data, 'post'))) {
        return s_err_sdk();
    }
    return $data;
}
예제 #14
0
function _s_db_update($table, &$v1, &$v2)
{
    if (s_bad_string($table) || s_bad_array($v1) || s_bad_array($v2) || s_bad_id($v1['id'], $pid)) {
        //没有指定主键,更新失败
        return s_log("no primary key.");
    }
    if (defined("APP_DB_PREFIX")) {
        //替换表名:"%s_user:update" => "201204disney_user:update"
        $table = sprintf($table, APP_DB_PREFIX, true);
    }
    if (isset($v2["id"])) {
        //防止更新主键
        unset($v2["id"]);
    }
    // 防止有重复的值
    $v2 = array_unique($v2);
    // 对$v1和$v2数据归类
    $values = array();
    foreach ($v2 as $key => $value) {
        if (!isset($v1[$key]) || $v1[$key] != $v2[$key]) {
            $values[] = "`{$key}`=" . (is_string($value) ? '"' . s_safe_value($value) . '"' : $value);
        }
    }
    if (empty($values)) {
        //不需要修改
        return false;
    }
    return s_db_exec("update `{$table}` set " . implode(", ", $values) . " where `id`={$pid}");
}
예제 #15
0
function _s_db_update($table, &$v1, &$v2)
{
    if (s_bad_string($table) || s_bad_array($v1) || s_bad_array($v2) || s_bad_id($v1["id"], $pid)) {
        return s_err_arg("no primary key. ex: \$var\\['id']");
    }
    if (isset($v2["id"])) {
        //防止更新主键
        unset($v2["id"]);
    }
    // 防止有重复的值
    $v2 = array_unique($v2);
    // 对$v1和$v2数据归类
    $values = array();
    foreach ($v2 as $key => $value) {
        if ($v1[$key] == $v2[$key]) {
            continue;
        }
        $values[] = "`{$key}`=" . (is_string($value) ? '"' . s_string_safe($value) . '"' : $value);
    }
    $prev = defined("APP_DB_PREFIX") ? APP_DB_PREFIX . "_" : "";
    $sql = "update `{$prev}{$table}` set " . implode(", ", $values) . " where `id`={$pid}";
    return s_db_exec($sql);
}
예제 #16
0
function s_bad_post($key, &$var = false, $type = "string", $escape = true)
{
    if (s_bad_string($key) || !isset($_POST[$key])) {
        return true;
    }
    if ($type === "string") {
        //字符类型
        if (s_bad_string($_POST[$key], $var)) {
            //不需要转义,直接返回判断结果
            return true;
        }
        //检查post值是否需要转义
        if ($escape === true) {
            $var = htmlspecialchars($var, ENT_QUOTES);
        }
        return false;
    } else {
        if ($type === "int") {
            //整型
            return s_bad_id($_POST[$key], $var);
        } else {
            if ($type === "int0") {
                //整型,可以为0
                return s_bad_0id($_POST[$key], $var);
            } else {
                if ($type === "array") {
                    //数组
                    return s_bad_array($_POST[$key], $var);
                } else {
                    if ($type === "email") {
                        //邮箱
                        return s_bad_email($_POST[$key], $var);
                    } else {
                        if ($type === "phone" || $type === "telphone") {
                            //手机或电话(只需要验证telphone,因为telphone的规则很松已经包含手机了)
                            return s_bad_telphone($_POST[$key], $var);
                        } else {
                            if ($type === "mobile") {
                                //手机
                                return s_bad_mobile($_POST[$key], $var);
                            } else {
                                if ($type === "image") {
                                    //图片(只取request.data中的数据)
                                    if (!isset($GLOBALS["HTTP_RAW_POST_DATA"]) || !$GLOBALS["HTTP_RAW_POST_DATA"]) {
                                        return true;
                                    }
                                    if ($var !== false) {
                                        $var = $GLOBALS["HTTP_RAW_POST_DATA"];
                                    }
                                    return false;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return true;
}