zblogphp系统文件说明c_system_common.php辅助通用函数说明

admin2023-01-171251

该文件是一些通用的函数,可以在任意地方使用它们。共有59个函数,函数的参数和返回类型见文章下半部分。

GetScheme($array)

GetWebServer()

GetSystem()

GetPHPEngine()

GetPHPVersion()

AutoloadClass($classname)

Logs($s, $iserror = false)

RunTime()

GetEnvironment()

plugin_dir_url($file)

plugin_dir_path($file)

GetValueInArray($array, $name)

GetValueInArrayByCurrent($array, $name)

GetGuid()

GetVars($name, $type = 'REQUEST')

GetVarsByDefault($name, $type = 'REQUEST', $default = null)

GetDbName()

GetCurrentHost($blogpath, &$cookiespath)

GetHttpContent($url)

GetDirsInDir($dir)

GetFilesInDir($dir, $type)

SetHttpStatusCode($number)

Redirect($url)

Redirect301($url)

Http404()

Http500()

Http503()

Http304($filename, $time)

GetGuestIP()

GetGuestAgent()

GetRequestUri()

GetFileExt($f)

GetFilePermsOct($f)

GetFilePerms($f)

AddNameInString($s, $name)

DelNameInString($s, $name)

HasNameInString($s, $name)

JsonError4ShowErrorHook($errorCode, $errorString, $file, $line)

JsonError($errorCode, $errorString, $data)

JsonReturn($data)

RespondError($errorCode, $errorString)

ScriptError($faultString)

CheckRegExp($source, $para)

TransferHTML($source, $para)

CloseTags($html)

SubStrUTF8_Start($sourcestr, $start, $cutlength)

SubStrUTF8($sourcestr, $cutlength)

SubStrUTF8_Html($sourcestr, $cutlength)

RemoveBOM($s)

GetTimeZonebyGMT($z)

htmlspecialchars_array($array)

FilterCorrectName($s)

CheckCanBeString($obj)

utf84mb_filter(&$sql)

utf84mb_fixHtmlSpecialChars()

utf84mb_convertToUCS4($matches)

utf84mb_convertToUTF8($matches)

VerifyWebToken($wt,$wt_id)

CreateWebToken($wt_id,$time)

GetScheme($array) 得到请求的方法,未必准确,比如SERVER没有某项,或是端口改过的。参数是数组,返回 https:// 或者 http:// 字符串。系统使用示例:define('HTTP_SCHEME', GetScheme($_SERVER));

GetWebServer()获取服务器。返回使用的是什么服务器,比如Apache、Nginx什么的。系统使用示例:define('PHP_SERVER', GetWebServer());

GetSystem()获取操作系统,返回使用的是什么操作系统。系统使用示例:define('PHP_SYSTEM', GetSystem());

GetPHPEngine()获得PHP解析引擎,返回 HHVM 或者 PHP 对应的常量。系统使用示例:define('PHP_SYSTEM', GetSystem());

GetPHPVersion()获取PHP版本,返回字符串。系统使用示例:$system_environment = PHP_OS . '; ' .

GetValueInArray(

explode(' ', str_replace(array('Microsoft-', '/'), array('', ''), GetVars('SERVER_SOFTWARE', 'SERVER'))), 0

) . '; ' .

'PHP ' . GetPHPVersion() . (IS_X64 ? ' x64' : '') . '; ' .

$zbp->option['ZC_DATABASE_TYPE'] . '; ' . $ajax;

AutoloadClass($classname)自动加载类文件,参数为类名。改函数自动加载位于zb_system/function/lib/文件夹下和类名同名的php文件。系统使用示例:AutoloadClass('ZBlogPHP');

Logs($s, $iserror = false)记录日志,参数1是需要记录的字符串内容,参数2是可选的,表示是否是一个错误日志。区别在于如果参数2是true的话,创建文件时会添加 -error 文件名字。系统使用示例:    if (ZBlogException::$islogerror == true) {

Logs(var_export(array('Error', $errno, $errstr, $errfile, $errline), true), true);

}

RunTime()页面运行时间,返回数组,包含 time,query,memory,error 4个元素。系统使用示例:RunTime(); //

GetEnvironment()获得系统信息,返回的类似于“WINNT; Apache2.2.25; PHP 5.4.44; mysqli; curl”的字符串。

plugin_dir_url($file)通过文件获取应用的URL地址。这个函数通过文件名称参数。这个函数在系统中没有看到有使用。【代码暂不研究】

plugin_dir_path($file)通过文件获取应用目录路径。这个函数通过文件名称参数。

GetValueInArray($array, $name)通过key从数组获取数据

参数1:数组名

参数2:下表key

返回结果。 $array[$name]

GetValueInArrayByCurrent($array, $name)获取数组中的当前元素数据。参数一样,结果通过调用上面那个函数返回。

GetGuid()获得GUID。uniqid函数获得当前时间微秒数的唯一ID,参数1是生成改ID的前缀,参数2如果设置为true,则生成长度为23的唯一ID,以便让GUID更唯一。trim函数去除字符串首尾为“zbp”的字符。str_replace函数将字符串中的点替换为空。最后返回该字符串。

GetVars($name, $type = 'REQUEST')获取参数值。

参数1:必须,数组的key名。

参数2:类型。默认为 REQUEST。

返回字符串或者null。

这个函数其实就是返回 $GLOBALS 数组指定类型的数组的某个元素的值。

GetVarsByDefault($name, $type = 'REQUEST', $default = null)获取参数值(可设置默认返回值)

参数1:数组KEY名

参数2:类型。默认 REQUEST。

参数3:默认返回值。默认为 null。

这个函数和上一个函数相似,只是这个函数可以设置见过为 null 或者空时的返回值。比如设置为 error 则见过是null或者空时返回 error。

GetDbName()获取数据库名。返回一个随机的SQLite数据文件名。例如:#%20590ac99bc939a751693701.db

GetCurrentHost($blogpath, &$cookiespath)获得当前网站地址

参数1:网站域名

参数2:返回cookie作用域,通过引用实现。

返回:网站的完整地址,如 http://localhost/zbp/

GetHttpContent($url)通过URL获取远程页面内容

参数为URL地址,返回页面文本内容,默认为 null。

GetDirsInDir($dir)获得目录下文件夹列表

参数1:目录名字

返回数组,文件夹列表。

GetFilesInDir($dir, $type)获取目录下制定类型文件列表

参数1:目录名字

参数2:文件类型,以|分隔

返回数组,文件列表

SetHttpStatusCode($number)设置http状态头。参数为int类型的状态值。返回true或者false表示是否设置成功。

Redirect($url)302跳转,参数为跳转链接

Redirect301($url)301跳转,参数为跳转链接

Http404()404跳转

Http500()500跳转

Http503()503跳转

Http304($filename, $time)设置304缓存头

参数1:文件名,参数2:缓存时间。

GetGuestIP()获取客户端IP,返回IP地址。使用$_SERVER['REMOTE_ADDR']获取。

GetGuestAgent()获得获取客户端Agent。使用$_SERVER['HTTP_USER_AGENT']获取。

GetRequestUri()获得请求来源,返回URL。

GetFileExt($f)获取文件后缀名。返回小写的后缀名。

GetFilePermsOct($f)获取文件权限,参数为文件名,返回文件权限,数值格式,如0644。

GetFilePerms($f)获取文件权限,参数为文件名,返回文件权限,字符表达格式,如-rw-r--r--。

AddNameInString($s, $name)向字符串型的参数表加入一个新参数。

参数1:字符串型的参数表,以|符号分隔

参数2:参数名

返回:返回新字符串,以|符号分隔

DelNameInString($s, $name)从字符串型的参数表中删除一个参数。

参数1:字符串型的参数表,以|符号分隔

参数2:参数名

返回:返回新字符串,以|符号分隔

HasNameInString($s, $name)在字符串参数值查找参数。

参数1:字符串型的参数表,以|符号分隔

参数2:参数名

返回:bool

JsonError4ShowErrorHook($errorCode, $errorString, $file, $line)以JSON形式返回错误信息(用于ShowError接口)。

调用下面这个函数返回结果。

JsonError($errorCode, $errorString, $data)以JSON形式返回错误信息。

参数1:错误编号

参数2:错误内容

参数3:object

返回:JSON格式字符串

JsonReturn($data)以JSON形式返回正确获取信息。参数是要返回的数据。

RespondError($errorCode, $errorString)XML-RPC应答错误页面。

参数1:错误代码

参数2:错误提示字符串

ScriptError($faultString)XML-RPC脚本错误页面,参数为错误提示字符串。

CheckRegExp($source, $para)验证字符串是否符合正则表达式。

参数1:字符串

参数2:正则表达式,可用[username]|[password]|[email]|[homepage]或自定义表达式

返回;bool

TransferHTML($source, $para)通过正则表达式格式化字符串。

参数1:字符串

参数2:正则表达式,可用[html-format]|[nohtml]|[noscript]|[enter]|[noenter]|[filename]|[normalname]或自定义表达式

返回:字符串

CloseTags($html)封装HTML标签。参数为html源码。

SubStrUTF8_Start($sourcestr, $start, $cutlength)获取UTF8格式的字符串的子串。

参数1:源字符串

参数2:起始位置

参数3:子串长度

返回:字符串

SubStrUTF8($sourcestr, $cutlength)获取UTF8格式的字符串的子串

参数1:源字符串

参数2:子串长度

返回:字符串

和上面函数不同的是这个函数只能从开头取。

SubStrUTF8_Html($sourcestr, $cutlength)截取HTML格式的UTF8格式的字符串的子串。

参数1:源字符串

参数2:子串长度

返回:字符串

RemoveBOM($s)删除文件BOM头,参数为文件内容。这个函数实际上只是去掉字符串开头的 BOM 的字符。str_replace函数将字符串中的点替换为空。最后返回该字符串。

GetTimeZonebyGMT($z)获取指定时区名。

参数1:时区号

返回:时区名

如,输入 8,返回 Asia/Shanghai。如果指定的时区号没有定义,返回默认值 UTC。

htmlspecialchars_array($array)对数组内的字符串进行htmlspecialchars。参数是待过滤字符串数组

FilterCorrectName($s)获得一个只含数字字母和-线的string,参数是字符串。

CheckCanBeString($obj)确认一个对象是否可被转换为string,返回bool

下面这些函数和数据库相关的

utf84mb_filter(&$sql)执行一个正则表达式搜索并且使用一个回调进行替换,替换的utf84mb_convertToUCS4是回调函数

utf84mb_fixHtmlSpecialChars()

utf84mb_convertToUCS4($matches)

utf84mb_convertToUTF8($matches)

VerifyWebToken($wt,$wt_id)验证Web令牌。参数1是令牌字符串,参数2是令牌ID。

CreateWebToken($wt_id,$time)创建Web令牌。参数1是令牌ID,参数2是令牌过期时间。

以下是该文件的功能代码。这个文件会在系统初始化阶段第4位加载。

//处理PHP版本兼容代码

如果没有定义hex2bin这个函数,这自己实现一个。

如果没有定义rrmdir这个函数,则自己实现一个。

如果下面这些常量不存在,则定义如下:

HTTP_URL_REPLACE = 1

HTTP_URL_JOIN_PATH = 2

HTTP_URL_JOIN_QUERY = 4

HTTP_URL_STRIP_USER = 8

HTTP_URL_STRIP_PASS = 16

HTTP_URL_STRIP_AUTH = 32

HTTP_URL_STRIP_PORT = 64

HTTP_URL_STRIP_PATH = 128

HTTP_URL_STRIP_QUERY = 256

HTTP_URL_STRIP_FRAGMENT = 512

HTTP_URL_STRIP_ALL = 1024

如果没有定义http_build_url函数,自己实现一个。

同上,gzdecode和session_status函数也是。

这篇文章并没有详细的解读各个语句的意思,原因在于这个文件的大部分都是函数的实现,并没有多少逻辑代码会影响博客系统的实现,我们需要做的只是调用函数即可。对于部分函数的实现,或许以后会专门研究。


网友评论