REC
首页
文章分类
源码资源
技术教程
程序软件
文创娱乐
玄学修炼
关于我们
其他页面
网站统计
友情链接
用户留言
高清壁纸
关于易航
热门文章
Joe再续前缘主题 - 搭建本站同款网站
易航网址导航系统 – 功能强大,轻量易用
JsonDb-PHP轻量级文件数据库系统
Typecho一键调整网站为冬天情景插件
V免签全开源免签约码支付系统(支持:支付宝 微信 QQ)
标签搜索
PHP
Web前端
网站源码
PHP源码
Typecho
Typecho插件
课程资料
Windows程序
Android软件
武术内功
HTML源码
Web
Joe主题
Python
Windows
国漫
网络协议
MySQL
NodeJs
小说
发布
登录
注册
找到
246
篇与
易航
相关的结果
- 第 22 页
2022-08-01
烟雨在线要饭系统V2.0源码
前言 时隔一年多,烟雨云要饭系统再次来袭,此次更新底层全部重构,拖拖拉拉终于写完! 源码截图 烟雨在线要饭系统图片 本次亮点 1.全自动引导安装,无法安装的几率小之又小,小白也能轻松装 2.整体架构性能提升 3.全Ajax操作,更人性化 4.强制使用php7,性能更上一层楼 5.没得哔哔了。。。 源码下载 烟雨在线要饭系统V2.0源码 下载地址:https://pan.baidu.com/share/init?surl=PGZZxYAO_dk0eNrt2SYYYw 提取码:8hm5
源码资源
# 网站源码
# PHP源码
易航
3年前
0
335
0
2022-08-01
黑人抬棺邀请您语音通话源码
源码介绍 最近很火的黑人抬棺,源码纯html上传即可用。 源码截图 黑人抬棺邀请您语音通话图片 源码下载 隐藏内容,请前往内页查看详情
源码资源
# 网站源码
# HTML源码
易航
3年前
2
118
1
2022-08-01
苍穹云个人网站引导页源码
源码介绍 一款非常漂亮的引导页,带网易云音乐播放,动态下雪特效背景自动切换,头像修改在src目录里的tx.png,背景修改bodyBgs数组里面的图片地址。 源码截图 苍穹云个人网站引导页图片 源码下载 苍穹云个人网站引导页源码 下载地址:https://pan.baidu.com/share/init?surl=mrf6guDa8RJ1_gHfJ_S4mQ 提取码:z7bh
源码资源
# 网站源码
易航
3年前
0
302
1
2022-08-01
自定义修改QQ在线状态源码
源码介绍 自定义网页在线修改QQ在线状态,需SVIP才可实现,先看使用教程获取设备IMEI。 源码截图 自定义修改QQ在线状态源码图片 源码下载 自定义修改QQ在线状态源码 下载地址:https://pan.baidu.com/share/init?surl=6COyBbuLQzelEHJJzf9lug 提取码:22a4
源码资源
# 网站源码
# PHP源码
易航
3年前
0
152
0
2022-08-01
绿色自适应网址发布页源码
源码介绍 自适应PC+Wap,体积很小仅9KB,用了快半个月了,拿去丢在阿里云OSS的静态托管一个月一两块钱搞定,主要是用来发布域名的防止哪天大家走丢找不到主站了, 源码截图 绿色自适应网址发布页图片 源码下载 绿色自适应网址发布页源码 下载地址:https://pan.baidu.com/share/init?surl=Yo1HNrAtgAAVKnVxO9Qu7g 提取码:5rwk
源码资源
# 网站源码
# HTML源码
易航
3年前
0
225
0
2022-07-19
Joe主题解决自定义多级分类生成网站地图URL显示不正确的bug
BUG说明 如下: 图片 解决方法 将 主题目录/library 中的 sitemap.php 文件换成我提供的文件即可 文件下载 隐藏内容,请前往内页查看详情
技术教程
# Joe主题
易航
3年前
19
376
0
2022-07-18
Typecho 1.2.0 提示版本更新Bug解决方法
Typecho以一向高雅的动作宣布了自己的回归: “这不是玩笑,我们回来了” Typecho 1.2.0 我也按照更新的方法将我的typecho更新到了1.2.0版,但是在后台却还是看到提示升级,当前版本1.2.0,最新版本1.2.0的字样。 图片 可以确定这是typecho的一个Bug,官方也给出了修复的办法,在代码的判断中修改一处就可以解决了。 if ( isset($json['release']) && preg_match("/^[0-9\.]+$/", $json['release']) && version_compare($json['release'], $version, '>=') && version_compare($json['release'], $version, '>') )在 var/Widget/Ajax.php 这个文件中,将 >= 改为 > 即可。 图片
技术教程
# Typecho
易航
3年前
1
360
6
2022-07-17
微信QQ防红提示浏览器打开源码
源码说明 QQ微信域名经常被拦截的朋友可以试试这款源码,QQ微信打开页面提示跳转浏览器单页源码 源码截图 QQ微信防红跳转浏览器图片 使用方法 暂无教程,总结就是输出文档之前放入代码 源码下载 隐藏内容,请前往内页查看详情
源码资源
# 网站源码
# PHP源码
易航
3年前
56
354
13
2022-07-17
PHP各种常用函数方法封装
当前日期和时间 /** * 当前日期和时间 * @return string */ function date_time(): string { return date('Y-m-d H:i:s'); }动态创建Element元素 /** * 动态创建Element元素 * * @param string $element * @return ElementBuilder */ function element($element) { return new ElementBuilder($element); } /** * @package ElementBuilder * @description 动态创建HTML的Element标签 * @author 易航 * @version 1.0 * @link http://blog.bri6.cn */ class ElementBuilder { private $options = [ 'element' => 'div', 'inner' => null, 'attributes' => [] ]; private function attributes($attributes) { return FormBuilder::attributes($attributes); } public function __construct($element) { $this->options['element'] = $element; } /** * 设置标签内部的HTML内容 * @param $innerHTML 要设置的标签HTML内容 * @return $this */ public function innerHTML($innerHTML) { $this->options['inner'] = $innerHTML; return $this; } /** * 设置标签内部的文本内容 * @param $innerText 要设置的标签文本内容 * @return $this */ public function innerText($innerText) { $this->options['inner'] = empty($innerText) ? $innerText : htmlentities($innerText); return $this; } /** * 批量设置标签的属性 * @param $attributes * @return $this */ public function attr($attributes, $content = null) { if (is_array($attributes)) { foreach ($attributes as $key => $value) { $this->options['attributes'][$key] = $value; } } if (is_string($attributes)) { $this->options['attributes'][$attributes] = $content; } return $this; } /** * 获取生成的HTML内容 * @return string */ public function get($html = null) { $this->innerHTML($html); $element = $this->options['element']; $content = $this->options['inner']; $attributes = $this->attributes($this->options['attributes']); if ($content === false) { $html = "<$element$attributes />"; } else { $html = "<$element$attributes>$content</$element>"; } return $html; } public function __toString() { return $this->get($this->options['inner']); } }解压ZIP文件 function zipExtract($src, $dest) { // 通过ZipArchive的对象处理zip文件 $zip = new ZipArchive(); //新建一个ZipArchive的对象 /* $zip->open这个方法的参数表示处理的zip文件名。 如果对zip文件对象操作成功,$zip->open这个方法会返回TRUE */ if ($zip->open($src) === true) { $zip->extractTo($dest); //假设解压缩到$dest路径文件夹的子文件夹php $zip->close(); //关闭处理的zip文件 return true; } return false; }获取指定目录下的文件和目录列表 /** * 获取指定目录下的文件和目录列表 * * @param string $directory 要扫描的目录 * @return DirScanner */ function scan_dir(string $directory) { return new DirScanner($directory); } /** * 获取指定目录下的文件和目录列表 */ class DirScanner { private array $list; private string $directory; /** * @param string $directory 要扫描的目录 */ public function __construct(string $directory) { $this->directory = str_replace(['//', '\\\\'], ['/', '\\'], $directory); $this->directory = preg_match('/^\/|\\\$/', $this->directory) ? $this->directory : $this->directory . DIRECTORY_SEPARATOR; $this->list = array_values(array_diff(scandir($directory), ['.', '..'])); } /** * 只获取文件 */ public function files(array $suffixes = []): array { return $this->filter($suffixes, 'is_file'); } /** * 只获取目录 */ public function dirs(): array { return $this->filter([], 'is_dir'); } /** * 获取所有文件和目录 */ public function all(): array { return $this->list; } /** * 过滤列表 */ private function filter(array $suffixes, callable $callback): array { $directory = $this->directory; return array_filter($this->list, function ($item) use ($directory, $suffixes, $callback) { $path = $directory . $item; if (!empty($suffixes) && is_file($path)) { $extension = pathinfo($item, PATHINFO_EXTENSION); if (!in_array($extension, $suffixes)) return false; } return $callback($path); }); } }删除文件或文件夹 /** * 删除文件或文件夹 * * @param string $directory 目录的路径。 * @param resource $context 上下文流(context stream) resource * @return bool */ function delete_directory(string $directory, $context = null) { if (is_dir($directory)) { $objects = scandir($directory); foreach ($objects as $object) { if ($object != "." && $object != "..") { if (is_dir($directory . DIR_SEP . $object)) { delete_directory($directory . DIR_SEP . $object); } else { unlink($directory . DIR_SEP . $object); } } } rmdir($directory, $context); } elseif (is_file($directory)) { unlink($directory, $context); } }多维数组转对象 /** * 多维数组转对象 * @param array $d * @return object */ function array_to_object(array $d): object { if (is_array($d)) { $json = json_encode($d); return json_decode($json); } else { return $d; } }多维对象转数组 /** * 多维对象转数组 * @param object|array $d * @return array */ function object_to_array($d) { if (is_object($d)) { $d = get_object_vars($d); // 获取给定对象的属性 } if (is_array($d)) { $function = __FUNCTION__; return array_map("self::$function", $d); } else { return $d; } }发送电子邮件 /** * 发送电子邮件 * @access public * @param string $title 邮件标题 * @param string $subtitle 邮件副标题 * @param string $content 邮件内容 * @param string $email 不填写则默认发送系统配置中的邮箱,优先程度:配置收件人>发信邮箱 * @return bool|object */ function send_mail($title, $subtitle, $content, $email = null) { $site = options('site'); $mail = options('mail'); if (empty($email)) { $email = empty($mail['recv']) ? $mail['account'] : $mail['recv']; } $PHPMailer = new \PHPMailer\PHPMailer\PHPMailer(); $language = $PHPMailer->setLanguage('zh_cn'); if (!$language) { return 'PHPMailer语言文件zh_cn加载失败'; } $PHPMailer->isSMTP(); $PHPMailer->SMTPAuth = true; $PHPMailer->CharSet = 'UTF-8'; $PHPMailer->SMTPSecure = $mail['secure']; // 允许 TLS 或者ssl协议 $PHPMailer->Host = $mail['smtp']; // SMTP服务器 $PHPMailer->Port = $mail['port']; // 服务器端口 25 或者465 $PHPMailer->FromName = $site['title']; //发件人昵称 $PHPMailer->Username = $mail['account']; //邮箱账号 $PHPMailer->From = $mail['account']; //邮箱账号 $PHPMailer->Password = $mail['pwd']; //邮箱密码 $PHPMailer->isHTML(true); $html = '<!DOCTYPE html><html lang="zh-cn"><head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, initial-scale=1.0"></head><body><style>.container{width:95%;margin:0 auto;border-radius:8px;font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;box-shadow:0 2px 12px 0 rgba(0,0,0,0.1);word-break:break-all}.title{color:#fff;background:linear-gradient(-45deg,rgba(9,69,138,0.2),rgba(68,155,255,0.7),rgba(117,113,251,0.7),rgba(68,155,255,0.7),rgba(9,69,138,0.2));background-size:400%400%;background-position:50%100%;padding:15px;font-size:15px;line-height:1.5}</style><div class="container"><div class="title">{title}</div><div style="background: #fff;padding: 20px;font-size: 13px;color: #666;"><div style="margin-bottom: 20px;line-height: 1.5;">{subtitle}</div><div style="padding: 15px;margin-bottom: 20px;line-height: 1.5;background: repeating-linear-gradient(145deg, #f2f6fc, #f2f6fc 15px, #fff 0, #fff 25px);">{content}</div><div style="line-height: 2">请注意:此邮件由系统自动发送,请勿直接回复。<br>若此邮件不是您请求的,请忽略并删除!</div></div></div></body></html>'; $PHPMailer->Body = strtr( $html, [ "{title}" => $title . ' - ' . $site['title'], "{subtitle}" => $subtitle, "{content}" => $content, ] ); $PHPMailer->addAddress($email); $PHPMailer->Subject = $title . ' - ' . $site['title']; if ($PHPMailer->send()) { return true; } else { return $PHPMailer->ErrorInfo; } }获取配置信息 function options($name = false, $value = false) { if ($name === false && $value == false) { return Options::all(); } if (func_num_args() == 1) { returnOptions::get($name); } return Options::save($name, $value); } class Options { private static $options = null; public static function initialize() { if (is_null(self::$options)) { $select = Db::name('options')->select(); self::$options = []; foreach ($select as $value) { self::$options[$value['name']] = $value['value']; } } } public static function get($name) { $name_list = explode('.', $name); // 将路径分解成键名数组 $value = self::$options; // 初始化$value为数组的根 // 遍历键名数组,逐级深入到数组中 foreach ($name_list as $name_value) { if (isset($value[$name_value])) { $value = $value[$name_value]; // 如果键存在,更新$value } else { return null; // 如果键不存在,返回null或者你可以选择抛出异常 } } return $value; // 返回最终找到的值 } public static function all() { return self::$options; } public static function save(string $name, $value) { if (array_key_exists($name, self::$options)) { $save = self::update($name, $value); } else { $save = self::insert($name, $value); } // 保存虚拟模型数据 self::model($name, $value); return $save; } public static function insert(string $name, $value) { // 插入虚拟模型数据 self::model($name, $value); // 插入数据库数据 return Db::name('options')->insert(['name' => $name, 'value' => $value]); } /** * 设置虚拟模型数据 */ public static function model(string $name, $value) { self::$options[$name] = $value; return true; } public static function update(string $name, $value) { // 更新虚拟模型数据 self::model($name, $value); // 更新数据库数据 return Db::name('options')->where('name', $name)->update(['value' => $value]); } }以数组的形式返回关于文件路径的信息 pathinfo(path, options); /** 返回的数组元素如下: ['dirname']: 目录路径 ['basename']: 文件名 ['extension']: 文件后缀名 ['filename']: 不包含后缀的文件名 **/ // path:规定要检查的路径。 /** options: PATHINFO_DIRNAME - 只返回 dirname PATHINFO_BASENAME - 只返回 basename PATHINFO_EXTENSION - 只返回 extension PATHINFO_FILENAME - 只返回 filename **/获取PHP代码执行后的结果 <?php function run_code($code) { $file_name = rand() . 'txt'; $content = '<?php $text = ' . $code . ' ?>'; file_put_contents($file_name, $content); include($file_name); unlink($file_name); return $text; } ?>多维数组降维 function ArrMd2Ud($arr) { #将数值第一元素作为容器,作地址赋值。 $ar_room = &$arr[key($arr)]; #第一容器不是数组进去转呀 if (!is_array($ar_room)) { #转为成数组 $ar_room = array($ar_room); } #指针下移 next($arr); #遍历 while (list($k, $v) = each($arr)) { #是数组就递归深挖,不是就转成数组 $v = is_array($v) ? call_user_func(__FUNCTION__, $v) : array($v); #递归合并 $ar_room = array_merge_recursive($ar_room, $v); #释放当前下标的数组元素 unset($arr[$k]); } return $ar_room; }字符串加密解密 /** * $string:需要加解密的字符串; * $operation:E表示加密,D表示解密; * $key:自定义密匙 */ function string($string, $operation, $key = '') { $key = md5($key); $key_length = strlen($key); $string = $operation == 'D' ? base64_decode($string) : substr(md5($string . $key), 0, 8) . $string; $string_length = strlen($string); $rndkey = $box = array(); $result = ''; for ($i = 0; $i <= 255; $i++) { $rndkey[$i] = ord($key[$i % $key_length]); $box[$i] = $i; } for ($j = $i = 0; $i < 256; $i++) { $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } for ($a = $j = $i = 0; $i < $string_length; $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); } if ($operation == 'D') { if (substr($result, 0, 8) == substr(md5(substr($result, 8) . $key), 0, 8)) { return substr($result, 8); } else { return ''; } } else { return str_replace('=', '', base64_encode($result)); } }
技术教程
# PHP
易航
3年前
0
217
2
上一页
1
...
21
22
23
...
28
下一页