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]; }
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; }
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; }
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); }
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; }
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; }
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; }
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; }
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; }
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); }
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; }
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; }
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; }
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}"); }
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); }
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; }