UCHome中关于公共函数(function_common.php)页面的代码分析(一)

发布时间:2019-02-07 整理:脚本之家 作者:未知
脚本之家收集整理的这篇文章主要介绍了UCHome中关于公共函数(function_common.php)页面的代码分析(一)脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随脚本之家小编过来看看吧!
01.<?php
02./*
03.    [UCenter Home] (C) 2007-2008 Comsenz Inc.
04.    $Id: function_common.php 2009-10-20 21:12:00
05.    @author ymaozi
06.    @copyright http://www.codedesign.cn/
07.    @uchome源码交流QQ群:83400263
08.*/
09.  
10.if(!defined('IN_UCHOME')) {
11.    exit('Access Denied');
12.}
13./**
14. * SQL ADDSLASHES 对sql的一些字符进行转义
15. * @param string or array $string
16. * @return string or array
17. */
18.function saddslashes($string) {
19.    if(is_array($string)) { //如果转入的是数组则对数组中的value进行递归转义
20.        foreach($string as $key => $val) {
21.            $string[$key] = saddslashes($val);
22.        }
23.    } else {
24.        $string = addslashes($string); //对单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符),进行转义
25.    }
26.    return $string;
27.}
28.  
29./**
30. * 取消HTML代码
31. * @param string or array $string
32. * @return string or array
33. */
34.function shtmlspecialchars($string) {
35.    if(is_array($string)) {
36.        foreach($string as $key => $val) {
37.            $string[$key] = shtmlspecialchars($val);
38.        }
39.    } else {
40.        $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/','&\\1',
41.            str_replace(array('&','"','<','>'),array('&',$string));//将传入的html中的&,",<,>,进行替换
42.    }
43.    return $string;
44.}

001./**
002. * 清空cookie与一些判断用户登录的信息
003. */
004.function clearcookie() {
005.    global $_SGLOBAL;
006.  
007.    obclean(); //清除缓存
008.    ssetcookie('auth','',-86400 * 365); //设置cookie名为auth的过期
009.    $_SGLOBAL['supe_uid'] = 0;
010.    $_SGLOBAL['supe_username'] = '';
011.    $_SGLOBAL['member'] = array(); //将这些全局变量清空
012.}
013.  
014.//cookie设置
015./**
016. * 设置cookie
017. * @param   string  cookie
018. * @param   string  cookie
019. * @param   int     cookie存储时间
020. * @return void
021. */
022.function ssetcookie($var,$value,$life=0) {
023.    global $_SGLOBAL,$_SC,$_SERVER;
024.    setcookie($_SC['cookiepre'].$var,$life?($_SGLOBAL['timestamp']+$life):0,$_SC['cookiepath'],$_SC['cookiedomain'],$_SERVER['SERVER_PORT']==443?1:0);
025.}
026.  
027.//
028./**
029. * 创建数据库连接对象
030. */
031.function dbconnect() {
032.    global $_SGLOBAL,$_SC;
033.  
034.    include_once(S_ROOT.'./source/class_mysql.php'); //引入数据库操作类
035.  
036.    if(empty($_SGLOBAL['db'])) { //如果没有创建数据库对象,则创建
037.        $_SGLOBAL['db'] = new dbstuff;
038.        $_SGLOBAL['db']->charset = $_SC['dbcharset'];
039.        $_SGLOBAL['db']->connect($_SC['dbhost'],$_SC['dbuser'],$_SC['dbpw'],$_SC['dbname'],$_SC['pconnect']);
040.    }
041.}
042.  
043.//获取在线IP
044.function getonlineip($format=0) {
045.    global $_SGLOBAL;
046.  
047.    if(empty($_SGLOBAL['onlineip'])) {
048.        if(getenv('HTTP_CLieNT_IP') && strcasecmp(getenv('HTTP_CLieNT_IP'),'unknown')) {
049.            //如果存在客户端ip,并通过strcasecmp(),比较不等于unknown,则获取客户端ip
050.                        $onlineip = getenv('HTTP_CLieNT_IP');
051.        } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')) {
052.            //如果存在代理ip,则获取代理ip
053.                        $onlineip = getenv('HTTP_X_FORWARDED_FOR');
054.        } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'),'unknown')) {
055.            //代理服务器 IP
056.                        $onlineip = getenv('REMOTE_ADDR');
057.        } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')) {
058.            $onlineip = $_SERVER['REMOTE_ADDR'];
059.        }
060.        preg_match("/[\d\.]{7,15}/",$onlineip,$onlineipmatches);
061.                //通过正则检验,是否是ip地址的格式
062.        $_SGLOBAL['onlineip'] = $onlineipmatches[0] ? $onlineipmatches[0] : 'unknown';
063.    }
064.    if($format) {
065.        $ips = explode('.',$_SGLOBAL['onlineip']); //将ip地址,以.为分隔存入到数组
066.        for($i=0;$i<3;$i++) {
067.            $ips[$i] = intval($ips[$i]);
068.        }
069.        return sprintf('%03d%03d%13d',$ips[0],$ips[1],$ips[2]);//返回ip地十的前三段,03d:三位整数,如果不足刚以0填充
070.    } else {
071.        return $_SGLOBAL['onlineip'];
072.    }
073.}
074.  
075.//
076./**
077. * 判断当前用户登录状态
078. */
079.function checkauth() {
080.    global $_SGLOBAL,$_SCONFIG,$_SCOOKie,$_SN;
081.  
082.    if($_SGLOBAL['mobile'] && $_GET['m_auth']) $_SCOOKie['auth'] = $_GET['m_auth'];
083.    if($_SCOOKie['auth']) { //如果设置了名了auth的cookie
084.        @list($password,$uid) = explode("\t",authcode($_SCOOKie['auth'],'DECODE')); //通过authcode()函数将加密过的auth进行解密,将解密的信息分别存在$password与$uid中
085.        $_SGLOBAL['supe_uid'] = intval($uid); //将$uid设置给全局的supe_uid
086.        if($password && $_SGLOBAL['supe_uid']) { //如果密码与uid都存在,则判断用户信息的正确性
087.            $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('session')." WHERE uid='$_SGLOBAL[supe_uid]'");
088.            if($member = $_SGLOBAL['db']->fetch_array($query)) {
089.                if($member['password'] == $password) {
090.                    $_SGLOBAL['supe_username'] = addslashes($member['username']);
091.                    $_SGLOBAL['session'] = $member;
092.                } else {
093.                    $_SGLOBAL['supe_uid'] = 0;
094.                }
095.            } else {//如果用户表中不存在该用户,则到用户表中查找
096.                $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('member')." WHERE uid='$_SGLOBAL[supe_uid]'");
097.                if($member = $_SGLOBAL['db']->fetch_array($query)) {
098.                    if($member['password'] == $password) {
099.                        $_SGLOBAL['supe_username'] = addslashes($member['username']);
100.                        $session = array('uid' => $_SGLOBAL['supe_uid'],'username' => $_SGLOBAL['supe_username'],'password' => $password);
101.                        include_once(S_ROOT.'./source/function_space.php');
102.                        insertsession($session);//将信息插入到session表中
103.                    } else {
104.                        $_SGLOBAL['supe_uid'] = 0;
105.                    }
106.                } else {
107.                    $_SGLOBAL['supe_uid'] = 0;
108.                }
109.            }
110.        }
111.    }
112.    if(empty($_SGLOBAL['supe_uid'])) {
113.                //如果supe_uid为空,则清除cookie
114.        clearcookie();
115.    } else {
116.        $_SGLOBAL['username'] = $member['username'];
117.    }
118.}

总结

以上是脚本之家为你收集整理的UCHome中关于公共函数(function_common.php)页面的代码分析(一)全部内容,希望文章能够帮你解决UCHome中关于公共函数(function_common.php)页面的代码分析(一)所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

标签: