query("SET NAMES 'utf8'"); return $DB; } function loginCookie($sKey,$uid,$name,$group,$time="") { if( $time == "" ) { $time = time(); } setcookie("phpsay_uname",$name,$time+604800,"/"); $loginEncode = Xxtea::encrypt(json_encode(array($uid,$name,$group,$time)),$sKey); setcookie("phpsay_secure",$loginEncode,$time+604800,"/"); setcookie("phpsay_connect",""); } function isLogin($sKey,$cookie) { $userInfo = array( "uid" => 0, "nickname" => "", "group" => 0, "logintime" => 0, "avatar" => "" ); if( isset($cookie['phpsay_uname'],$cookie['phpsay_secure']) ) { $userArr = json_decode(Xxtea::decrypt($cookie['phpsay_secure'],$sKey),true); if( count($userArr) == 4 ) { if( $cookie['phpsay_uname'] == $userArr[1] ) { $userInfo['uid'] = $userArr[0]; $userInfo['nickname'] = $userArr[1]; $userInfo['group'] = $userArr[2]; $userInfo['logintime'] = $userArr[3]; $userInfo['avatar'] = getAvatarURL($userArr[0]); } } } return $userInfo; } function singOut() { setcookie("phpsay_secure","",1,"/"); setcookie("phpsay_logintime","",1,"/"); } function connectCookie($sKey,$connectArray) { $loginEncode = Xxtea::encrypt(json_encode($connectArray),$sKey); setcookie("phpsay_connect",$loginEncode); } function isQQConnect($sKey) { $connectArray = array( "connect" => "", "openid" => "", "nickname" => "", "avatar" => "" ); if( isset($_COOKIE['phpsay_connect']) ) { $cookieArray = json_decode(Xxtea::decrypt($_COOKIE['phpsay_connect'],$sKey),true); if( isset($cookieArray['connect'],$cookieArray['openid'],$cookieArray['nickname'],$cookieArray['avatar']) ) { if ( $cookieArray['connect'] == "QQ" && strlen($cookieArray['openid']) == 32 ) { return $cookieArray; } } } return $connectArray; } function createSecureKey($len,$num=true) { $arr = array( 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' ); if( $num ) { array_push($arr,'0','1','2','3','4','5','6','7','8','9'); } $keyindex = count($arr)-1; $keystr = ""; for ( $i=0;$i<$len;$i++ ) { $keystr .= $arr[rand(0,$keyindex)]; } return $keystr; } function avatarPath($uid) { return "avatar/".($uid%32)."/".($uid%257)."/".$uid."/"; } function getAvatarURL($uid,$size=100) { return avatarPath($uid).$size; } function getImageURL($file,$size) { if ($file == "") { return ""; } return "./pictures/".$file."_".$size; } function emailCheck($email) { $ret = false; if( strlen($email) >= 6 && strlen($email) <= 36 ) { if( strstr($email, '@') && strstr($email, '.') ) { if( preg_match("/^([_a-z0-9]+([\._a-z0-9-]+)*)@([a-z0-9]{1,}(\.[a-z0-9-]{2,})*\.[a-z]{2,4})$/i", $email) ) { $ret = true; } } } return $ret; } function getStrlen($str) { return mb_strlen($str,"utf-8"); } function textSubstr($str,$start,$len) { return mb_substr($str,$start,$len,"utf-8"); } function textCount($str,$needle) { return mb_substr_count($str,$needle,"utf-8"); } function checkNickname($nickname) { if( strlen($nickname) < 3 || getStrlen($nickname) < 2 ) { return "昵称太短了 ^_^"; } if( getStrlen($nickname) > 10 ) { return "昵称太长了 ^_^"; } if( is_numeric(substr($nickname,0,1)) || substr($nickname,0,1) == "_" ) { return "昵称不能以数字和下划线开头"; } if( substr($nickname,-1,1) == "_" ) { return "昵称不能以下划线结尾"; } if( !preg_match('/^[\x{4e00}-\x{9fa5}_a-zA-Z0-9]+$/u', $nickname) ) { return "昵称只能用汉字、英文、数字及下划线"; } for( $i=0,$l=getStrlen($nickname); $i<$l; $i++ ) { if( textCount($nickname,textSubstr($nickname,$i,1)) > 3 ) { return "昵称内重复字符太多"; } } return ""; } function isMobileRequest() { $HTTP_USER_AGENT = isset($_SERVER['HTTP_USER_AGENT']) ? strtolower($_SERVER['HTTP_USER_AGENT']) : ""; if( preg_match('/(symbian|smartphone|opera mini|windows phone|iphone|ipad|ipod|android|blackberry|kindle|ucweb)/i',$HTTP_USER_AGENT) ) { return true; } return false; } function countDownTime($unixTime) { if( $unixTime == 0 ) { return ""; } $showTime = date('Y',$unixTime)."年".date('n',$unixTime)."月".date('j',$unixTime)."日 ".date('H:i',$unixTime); if( date('Y',$unixTime) == date('Y') ) { $showTime = date('n',$unixTime)."月".date('j',$unixTime)."日 ".date('H:i',$unixTime); if( date('n.j',$unixTime) == date('n.j') ) { $timeDifference = time() - $unixTime + 1; if( $timeDifference < 60 ) { return $timeDifference."秒前"; } if( $timeDifference >= 60 && $timeDifference < 3600 ) { return floor($timeDifference/60)."分钟前"; } return date('H:i',$unixTime); } if( date('n.j',($unixTime+86400)) == date('n.j') ) { return "昨天 ".date('H:i',$unixTime); } } return $showTime; } function remainingTime($unixTime) { $nowTime = time(); if( $nowTime >= $unixTime ) { return ""; } $second = $unixTime - $nowTime; if( $second < 61 ) { return $second."秒"; } $day = floor($second/86400); if( $day >= 3 ) { $hour = floor($second%86400/3600); if( $hour > 0 ) { return $day."天".$hour."小时"; } return $day."天"; } $hour = floor($second/3600); $minute = floor($second%3600/60); if( $minute > 0 ) { return $hour."小时".$minute."分钟"; } return $hour."小时"; } function parseUrl($str) { $auto_arr = array( "/(?<=[^\]a-z0-9-=\"'\\/])((https?|ftp):\/\/)([a-z0-9\/\-_+=.~!%@?#%&;:$\\│]+)/i", "/(?<=[^\]a-z0-9\/\-_.~?=:.])([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4}))/i" ); $auto_url = array( '\\1\\3', '\\0' ); return preg_replace($auto_arr,$auto_url," ".$str); } function strAddslashes($str) { if ( !get_magic_quotes_gpc() ) { $str = addslashes($str); } return $str; } function filterCode($str,$filter=true) { if( $filter ) { $str = preg_replace("/[\n]+/is","\n",str_replace(array("\r","\t"),"",$str)); } return trim(strAddslashes(strip_tags($str))); } function filterHTML($str) { $str = stripslashes($str); $str = htmlspecialchars($str); $str = parseUrl($str); $str = preg_replace_callback("/\@([^[:punct:]\s]{3,39})([\s]+)/",'atName', $str." "); return trim(nl2br($str)); } function atName($str) { if( in_array($str[1], array("。","?",",","!")) ) { return $str[0]; } return '@'.$str[1].''.$str[2]; } function mkDirs($path) { $array_path = explode("/",$path); $_path = ""; for($i=0;$iarray('method'=>'GET','timeout'=>3)))); file_put_contents($avatarFile, $avatarData); $imgInfo = @getimagesize($avatarFile); if( isset($imgInfo[0],$imgInfo[1],$imgInfo[2]) && in_array($imgInfo[2], array(1,2,3)) ) { createAvatar($avatarFile,$imgInfo,100,$avatarFile); } else { unlink($avatarFile); copy($defaultAvatar, $avatarFile); } } else { copy($defaultAvatar, $avatarFile); } } function createAvatar($source,$imgInfo,$wh,$destination) { $image_p = imagecreatetruecolor($wh, $wh); switch($imgInfo[2]) { case 1: $image = imagecreatefromgif($source); break; case 2: $image = imagecreatefromjpeg($source); break; case 3: $image = imagecreatefrompng($source); break; } if( $imgInfo[0] > $imgInfo[1] ) { $imgInfo[0] = $imgInfo[0]-($imgInfo[0]-$imgInfo[1]); } if( $imgInfo[0] < $imgInfo[1] ) { $imgInfo[1] = $imgInfo[1]-($imgInfo[1]-$imgInfo[0]); } imagecopyresampled($image_p, $image, 0, 0, 0, 0, $wh, $wh, $imgInfo[0], $imgInfo[1]); imagejpeg($image_p, $destination,100); imagedestroy($image_p); imagedestroy($image); } function sendPasswordEmail($sendName,$SendMail,$receiveMail,$receiveName,$resetCode) { $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; $headers .= 'From: '.$sendName.' <'.$SendMail.'>' . "\r\n"; $resetUrl = "http://".$_SERVER['HTTP_HOST']."/passport.php?do=password&code=".$resetCode; $mailBody = ''.$receiveName.',请点击以下链接重设密码('.date('Y-m-d H:i',time()+1800).'前有效)
'; $mailBody .= ''.$resetUrl.''; @mail($receiveMail,$sendName."-密码重置",$mailBody,$headers); } ?>