首页
友链
壁纸
留言
今日热榜
更多
关于
时光
推荐
精品流量卡
Search
1
都二十多年了,你的梦为什么还没碎!
57,089 阅读
2
2022年5个好用的 BT/ 磁力链接下载工具推荐 |Windows 、安卓系统
37,369 阅读
3
nps内网穿透实现外网访问树莓派
32,425 阅读
4
实践利用宝塔建emlog个人博客-超详细【原创】
26,132 阅读
5
Typecho-Joe-Theme主题帮助文档
24,621 阅读
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
登录
Search
标签搜索
PHP
HTML
API
Javascript
源码
JS
Vue
Github
CloudFlare
接口
函数
SQL
ASP.NET
MVC
EF
T4模板
后台管理
CDN
微信小程序
MAC
韩小韩
累计撰写
261
篇文章
累计收到
1,303
条评论
首页
栏目
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
页面
友链
壁纸
留言
今日热榜
关于
时光
推荐
精品流量卡
搜索到
1
篇与
获取客户端IP
的结果
2021-01-20
PHP函数大全·持续更新
邮箱验证function is_valid_email($email) { if (preg_match('/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/', $email)) { return true; } else { return false; } } OR function check_email($email) { $result = trim($email); if (filter_var($result, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } }301跳转function redirect($url) { header('location:'.$url, false, 301); exit; }获取客户端IPfunction real_ip($type = 0) { $ip = $_SERVER['REMOTE_ADDR']; if ($type <= 0 && isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) { foreach ($matches[0] as $xip) { if (filter_var($xip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { $ip = $xip; break; } } } elseif ($type <= 0 && isset($_SERVER['HTTP_CLIENT_IP']) && filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif ($type <= 1 && isset($_SERVER['HTTP_CF_CONNECTING_IP']) && filter_var($_SERVER['HTTP_CF_CONNECTING_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { $ip = $_SERVER['HTTP_CF_CONNECTING_IP']; } elseif ($type <= 1 && isset($_SERVER['HTTP_X_REAL_IP']) && filter_var($_SERVER['HTTP_X_REAL_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { $ip = $_SERVER['HTTP_X_REAL_IP']; } return $ip; }X_FORWARDED_FOR:之前的获取真实IP方式,极易被伪造IPX_REAL_IP:在网站使用CDN的情况下选择此项,在不使用CDN的情况下也会被伪造REMOTE_ADDR:直接获取真实请求IP,无法被伪造,但可能获取到的是CDN节点IP取中间文本function getSubstr($str, $leftStr, $rightStr) { $left = strpos($str, $leftStr); $right = strpos($str, $rightStr, $left); if ($left < 0) return ''; if ($right > 0) { return substr($str, $left + strlen($leftStr), $right - $left - strlen($leftStr)); } else { return substr($str, $left + strlen($leftStr)); } }是否HTTPS访问function is_https() { if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) { return true; } elseif (isset($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) == 'on' || $server['HTTPS'] == '1')) { return true; } elseif (isset($_SERVER['HTTP_X_CLIENT_SCHEME']) && $_SERVER['HTTP_X_CLIENT_SCHEME'] == 'https') { return true; } elseif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { return true; } elseif (isset($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https') { return true; } elseif (isset($_SERVER['HTTP_EWS_CUSTOME_SCHEME']) && $_SERVER['HTTP_EWS_CUSTOME_SCHEME'] == 'https') { return true; } return false; }随机IPfunction randIp() { return mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255); }毫秒时间戳function msectime() { list($msec, $sec) = explode(' ', microtime()); return (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000); }获取重定向地址function getrealurl($url){ @$header = get_headers($url,1); if (strpos($header[0],'301') || strpos($header[0],'302')) { if(is_array($header['Location'])) { return $header['Location'][count($header['Location'])-1]; }else{ return $header['Location']; } }else { return $url; } }jsonp转数组function jsonp_decode($jsonp, $assoc = false) { $jsonp = trim($jsonp); if (isset($jsonp[0]) && $jsonp[0] !== '[' && $jsonp[0] !== '{') { $begin = strpos($jsonp, '('); if (false !== $begin) { $end = strrpos($jsonp, ')'); if (false !== $end) { $jsonp = substr($jsonp, $begin + 1, $end - $begin - 1); } } } return json_decode($jsonp, $assoc); }秒数转换详细时间/** * 将秒数转换为剩余详细时间! */ function Sec2Time($time) { if (is_numeric($time)) { $value = array( "years" => 0, "days" => 0, "hours" => 0, "minutes" => 0, "seconds" => 0, ); if ($time >= 31556926) { $value["years"] = floor($time / 31556926); $time = ($time % 31556926); } if ($time >= 86400) { $value["days"] = floor($time / 86400); $time = ($time % 86400); } if ($time >= 3600) { $value["hours"] = floor($time / 3600); $time = ($time % 3600); } if ($time >= 60) { $value["minutes"] = floor($time / 60); $time = ($time % 60); } $value["seconds"] = floor($time); $t = ($value["years"] >= 1 ? $value["years"] . "年" : '') . ($value["days"] >= 1 ? $value["days"] . "天" : '') . ($value["hours"] >= 1 ? $value["hours"] . "小时" : '') . ($value["minutes"] >= 1 ? $value["minutes"] . "分" : '') . ($value["seconds"] >= 1 ? $value["seconds"] . "秒" : ''); return (!empty($t) ? $t : '0秒'); } else { return (bool) FALSE; } }时间相差秒数/** * @param $startdate 开始时间 * @param int $enddate 结束时间 * 返回两者之间相差多少秒 */ function TimeLag($startdate, $enddate = -1) { global $date; $enddate = ($enddate == -1 ? $date : $enddate); $time = strtotime($enddate) - strtotime($startdate); //和结束时间的时间戳 $text = ''; $dater = floor(($time) / 86400); if ($dater > 0) { $time = $time - ($dater * 86400); $text .= $dater . '天'; } $hour = floor(($time) / 3600); if ($hour > 0) { $time = $time - ($hour * 3600); $text .= $hour . '小时'; } $minute = floor(($time) / 60); $time = $time - ($minute * 60); if ($minute > 0) { $text .= $minute . '分钟'; } $second = floor(($time) % 60); if ($second > 0) { $text .= $second . '秒'; } return $text; }生成唯一token参数/** * @param $vals 混淆函数 * 生成唯一token参数! */ function TokenCreate($vals = '1') { $key = mt_rand(); $hash = hash_hmac("sha1", $vals . mt_rand() . time(), $key, true); return str_replace(['=', '_', '-'], '', strtr(base64_encode($hash), '+/', '-_')); }
2021年01月20日
1,122 阅读
0 评论
0 点赞