- 浏览: 1742648 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (641)
- vb2005xu自己动手系列 (174)
- vb2005xu开发文章转摘 (47)
- vb2005xu发发牢骚 (99)
- vb2005xu新技术灌水 (12)
- vb2005xu网络资源集锦 (21)
- vb2005xu软件学习 (60)
- 英语学习 (3)
- JavaScript 学习 (54)
- JAVA OOP 巩固 之 CustomDatabase 的开发 (5)
- 2013年9月之前所在公司 记事 (7)
- FleaPHP/QEEPHP 资料 (87)
- JAVA MAIL 学习篇 (4)
- Python turbogears (5)
- Rails 个人开发四部曲 (3)
- 名人传 (8)
- iwp framework (5)
- 高考零分作文 (5)
- startos (8)
- lua (0)
- 职场 (1)
最新评论
-
hellotieye:
自己 评论 自己 挺嗨呀
Mysql sql查询时 if 的用法 -
igevin:
转载请标明出处,转自Gevin的博客http://blog.i ...
RESTful API 编写指南 -
Theobob:
...
实现简单的ACL -
vb2005xu:
比如 对于 curl 调用就不再需要 加各种if 判断了,
$ ...
搞一个简单的数据打印工具AsDebug の Laravel -
vb2005xu:
http://geekplux.com/wiki/
YII2 模块内自定义错误页
<?php // 摘自: FLEA_Helper_ImgCode class xser_helper_imgcode { private $_code ; // 生成的验证码 private $_expired ; // 验证码过期时间 private $imagetype = 'jpeg'; // 验证码图片的类型(默认为 jpeg) /** * 指示是否在生成验证码图片时保留已有的验证码 * * 保留已有的验证码可以让用户在各个不同的页面都看到一致的验证码。 * 只有这个验证码使用后,已有的验证码才会失效。 * * @var boolean */ private $keepCode = false; private $code_key = 'x_i_c' ,$expired_key = 'x_i_c_expired'; public function __construct($key=''){ @session_start(); $this->code_key .= "_{$key}" ; $this->expired_key .= "_{$key}" ; $this->_code = isset($_SESSION[$this->code_key])?$_SESSION[$this->code_key]:''; $this->_expired = isset($_SESSION[$this->expired_key])?$_SESSION[$this->expired_key]:0; } /** * 检查图像验证码是否有效 * @param string $code * @return boolean */ public function check($code) { if (time()>=$this->_expired || strtoupper($code)!=strtoupper($this->_code)) return false; return true; } /** * 检查图像验证码是否有效(区分大小写) * @param string $code * @return boolean */ function checkCaseSensitive($code) { if (time()>=$this->_expired || $code!=$this->_code) return false; return true; } /** * 清除 session 中的 imgcode 相关信息 */ function clear() { unset($_SESSION[$this->code_key]);unset($_SESSION[$this->expired_key]); } /** * 利用 GD 库产生验证码图像 * * 目前 $options 参数支持下列选项: * - paddingLeft, paddingRight, paddingTop, paddingBottom * - border, borderColor * - font, color, bgcolor * * 如果 font 为 0-5,则使用 GD 库内置的字体。 * 如果要指定字体文件,则 font 选项必须为字体文件的绝对路径,例如: * <code> * $options = array('font' => '/var/www/example/myfont.gdf'); * image($type, $length, $lefttime, $options); * </code> * * @param int $type 验证码包含的字符类型,0 - 数字、1 - 字母、其他值 - 数字和字母 * @param int $length 验证码长度 * @param int $leftime 验证码有效时间(秒) * @param array $options 附加选项,可以指定字体、宽度和高度等参数 */ function image($type = 0, $length = 4, $lefttime = 900, $options = null) { if ($this->keepCode && $this->_code != '') { $code = $this->_code; } else { // 生成验证码 switch ($type) { case 0: $seed = '0123456789'; break; case 1: $seed = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; break; default: $seed = '346789ABCDEFGHJKLMNPQRTUVWXYabcdefghjklmnpqrtuvwxy'; } if ($length <= 0) { $length = 4; } $code = ''; list($usec, $sec) = explode(" ", microtime()); srand($sec + $usec * 100000); $len = strlen($seed) - 1; for ($i = 0; $i < $length; $i++) { $code .= substr($seed, rand(0, $len), 1); } $_SESSION['x_i_c'] = $code; } $_SESSION['x_i_c_expired'] = time() + $lefttime; // 设置选项 $paddingLeft = isset($options['paddingLeft']) ? (int)$options['paddingLeft'] : 3; $paddingRight = isset($options['paddingRight']) ? (int)$options['paddingRight'] : 3; $paddingTop = isset($options['paddingTop']) ? (int)$options['paddingTop'] : 2; $paddingBottom = isset($options['paddingBottom']) ? (int)$options['paddingBottom'] : 2; $color = isset($options['color']) ? $options['color'] : '0xffffff'; $bgcolor = isset($options['bgcolor']) ? $options['bgcolor'] : '0x666666'; $border = isset($options['border']) ? (int)$options['border'] : 1; $bdColor = isset($options['borderColor']) ? $options['borderColor'] : '0x000000'; // 确定要使用的字体 if (!isset($options['font'])) { $font = 5; } else if (is_int($options['font'])) { $font = (int)$options['font']; if ($font < 0 || $font > 5) { $font = 5; } } else { $font = imageloadfont($options['font']); } // 确定字体宽度和高度 $fontWidth = imagefontwidth($font); $fontHeight = imagefontheight($font); // 确定图像的宽度和高度 $width = $fontWidth * strlen($code) + $paddingLeft + $paddingRight + $border * 2 + 1; $height = $fontHeight + $paddingTop + $paddingBottom + $border * 2 + 1; // 创建图像 $img = imagecreate($width, $height); // 绘制边框 if ($border) { list($r, $g, $b) = $this->_hex2rgb($bdColor); $borderColor = imagecolorallocate($img, $r, $g, $b); imagefilledrectangle($img, 0, 0, $width, $height, $borderColor); } // 绘制背景 list($r, $g, $b) = $this->_hex2rgb($bgcolor); $backgroundColor = imagecolorallocate($img, $r, $g, $b); imagefilledrectangle($img, $border, $border, $width - $border - 1, $height - $border - 1, $backgroundColor); // 绘制文字 list($r, $g, $b) = $this->_hex2rgb($color); $textColor = imagecolorallocate($img, $r, $g, $b); imagestring($img, $font, $paddingLeft + $border, $paddingTop + $border, $code, $textColor); // 输出图像 switch (strtolower($this->imagetype)) { case 'png': header("Content-type: " . image_type_to_mime_type(IMAGETYPE_PNG)); imagepng($img); break; case 'gif': header("Content-type: " . image_type_to_mime_type(IMAGETYPE_GIF)); imagegif($img); break; case 'jpg': default: header("Content-type: " . image_type_to_mime_type(IMAGETYPE_JPEG)); imagejpeg($img); } imagedestroy($img); unset($img); } /** * 将 16 进制颜色值转换为 rgb 值 * * @param string $hex * * @return array */ private function _hex2rgb($color, $defualt = 'ffffff') { $color = strtolower($color); if (substr($color, 0, 2) == '0x') { $color = substr($color, 2); } elseif (substr($color, 0, 1) == '#') { $color = substr($color, 1); } $l = strlen($color); if ($l == 3) { $r = hexdec(substr($color, 0, 1)); $g = hexdec(substr($color, 1, 1)); $b = hexdec(substr($color, 2, 1)); return array($r, $g, $b); } elseif ($l != 6) { $color = $defualt; } $r = hexdec(substr($color, 0, 2)); $g = hexdec(substr($color, 2, 2)); $b = hexdec(substr($color, 4, 2)); return array($r, $g, $b); } }
demo:
/** * @return xser_helper_imgcode */ private function imgcode_instance(){ xser::loadhelper('imgcode'); if (!xser::is_register('admin_imgcode')) return xser::register(new xser_helper_imgcode('admin'),'admin_imgcode'); return xser::singleton_alias('admin_imgcode'); } public function actionImgcode(){ // 生成注册码 $this->imgcode_instance()->image(0,4,900,array( 'border' => '0' ,'bgcolor' => '#d4d0c8' ,'color' => '#666666' , 'paddingTop' => '1' ,'paddingBottom' => '1' )); }
发表评论
-
ws-http 最简单轻量的PHP CURL工具库
2016-07-29 20:44 2549欢迎大家拍砖 https://github.com/to ... -
Facade 包装类 -- 解决视图里面长长的命名空间调用问题
2016-04-20 10:48 1652有时候模版里面定义 ... -
PHP单例模式面试注意事项
2015-10-20 09:57 1898最近面了不少PHP从业者,有实习生也有5/6年以上的开发者 ... -
NGINX 配置 SSL 证书 搭建 HTTPS 网站
2015-10-19 19:19 2859下面是详细的配置过程: 1、在服务器上使用 Open ... -
关于php cron任务管理的实现假想
2015-10-17 21:25 1824之前每开发一个计划任务功能均需要在线上操作crontab来新 ... -
修改一些PHP工具
2014-10-24 19:27 1740原来的代码 在非框架下是木有问题的,但是用在框架下就报错, ... -
sublime text linux上中文输入问题的终极解决方案
2014-10-13 11:07 8506我一直在使用sublime text ... -
qeephp3.0 发布了
2014-10-07 17:21 1655QeePHP 是一个快速、灵活的开发框架。应用各种成熟的架构 ... -
swiftmailer 的快捷助手 qser-mailer
2014-09-09 23:52 3542近日在对charsen的修改版上进行了再次的修改与调整,对 ... -
PHP 中简单的伪造IP刷票实现
2014-05-15 17:06 2675一般而言,我们的获取用户真实ip的代码大致是这样... / ... -
PHP5.5 htmlspecialchars 返回null的坑
2014-04-25 12:23 2561昨天在写 PDO数据库封装类的 测试代码时遇到这个问题,取 ... -
PHP 5.5 empty + 魔术变量 的坑
2014-04-16 15:53 1554今天在测试代码时遇到这么一个疑问? dump((in ... -
Aert_Log: 设计一个精简易用的日志
2014-04-13 18:28 2403日志记录对于应用的 ... -
创建一个简单的短链服务类
2013-07-01 18:20 1317整理一个简单的短链算法,整理到自己的代码库中: &l ... -
收集常用的PHP简单代码
2013-06-30 17:53 2002对于日常工作中整理出来的某些功能做个简单梳理: 1 ... -
简易PHP路由,支持正反向url解析支持
2013-06-21 22:23 8162几年前实现了一个简单的正向路由,那时候不会写反向路由解析, ... -
系统学习のCACHE 学习
2012-11-21 13:58 1839http://www.phpfans.net/article/ ... -
YY 下 sql查询封装类 不知道好不好使
2012-07-18 16:44 1282<?php class Pkg_Db_Actor { ... -
生成后台管理菜单 admin_menu 类
2012-05-05 18:27 4583<?php /** * 管理菜单 * */ ... -
抽取个sql生成器工具 -- 摘自 fuelphp1.1 版本
2012-04-25 20:17 1180<?php /** * Sql 创造者类 * ...
相关推荐
NULL 博文链接:https://vb2005xu.iteye.com/blog/618326
CH34XSER驱动(一些ESP32开发板需要该驱动),安装后需重启。 (该zip文件下有英文版驱动安装教程)
在网上找了半天才找到的ch340的mac驱动程序,前天买了一块arduino的板子,发现上边的USB转串口芯片用的是ch340的,windows7下可以自动安装驱动,但是在mac系统下发现找不到arduino的板子,找了半天才找到这个驱动。...
基于matlab实现的数值计算及金融运用 ,金融时间序列数据分析 ,MATLAB和其他软件数据连接.rar
使用SegNet进行语义分割-python源码.zip
JSP企业电子投票系统 2
EmotionVGGnet情绪识别-python源码.zip
基于matlab实现的遗传算法、模拟退火算法、禁忌搜索算法求解VRP问题的matlab程序.rar
大数据Python科学计算库-Numpy实战:numpy代码 练习题.ipynb 9-读写.ipynb 8-随机模块.ipynb 7-运算.ipynb 6-数组 生成.ipynb 5-数组形状.ipynb 4-排序.ipynb 3-数值计算. ipynb 2-array结构.ipynb 1-Numpy概述.ipynb 1- Numpy概述.ipynb 2-array结构.ipynb 3-数值计算.ipy nb 4-排序.ipynb 5-数组形状.ipynb 6-数组生成.ipynb 7-运算.ipynb 8-随机模块.ipynb 9-读写.ipynb 练习题.i pynb
本文档是课题研究的研究报告内含调研以及源码设计以及结果分析
基于BlazePose+KNN实现人体姿态健身计数算法python源码+项目说明.zip 项目描述: 实现基于mediapipe的人体姿态识别的AI健身自动计数功能 支持健身动作:1、俯卧撑 2、深蹲 3、引体向上 4、仰卧起坐 创建时间:2022.11.28 完成时间:2022.11.28 如何训练新的健身动作模型? 1、修改mian函数 2、首先在fitness_pose_images_in的文件夹下存储对应健身的初态动作与末态动作图像 3、修改videoprocess.py文件中的代码,flag模式选择部分,注意class_name必须与fitness_pose_images_in文件夹下的文件名字保持一致 4、修改videoprocess.py文件中的代码,flag模式选择部分,注意class_name必须与fitness_pose_images_in文件夹下的文件名字保持一致 5、修改trainingsetprocess.py文件中的代码,flag模式选择部分,注意 文件名 必须与fitness_pose_images_in文件夹下的文件名字保持一
Dijkstra 算法,又称为迪杰斯特拉算法,是一种用于解决单源最短 路径问题的经典算法。它的核心思想是通过逐步确定起点到其他顶 点的最短路径来求解。该算法被广泛应用于图论和网络路由等领域。 Dijkstra 算法的基本步骤如下: 1. 创建一个距离数组 dist[] ,用于存储起点到各个顶点的最短距离。 将起点的最短距离初始化为 0,其他顶点的最短距离初始化为无穷 大。 2. 创建一个集合 S ,用于存储已经找到最短路径的顶点。 3. 重复以下步骤,直到集合 S 包含所有顶点: a. 从距离数组 dist[]中选择最小值对应的顶点 v,将 v 加入集合 S。 b. 更新距离数组 dist[] : - 对于每个与 v 相邻的顶点 u,如果通过顶点 v 可以获得更短的 路径,则更新 dist[u]为更短的距离。 c. 重复步骤 a 和 b,直到集合 S 包含所有顶点。 4. 最终,距离数组 dist[]中存储的就是起点到各个顶点的最短路径。 下面通过一个简单的例子来说明 Dijkstra 算法的具体过程。假设有 一个带权有向图,其中的顶点和边分别如下所示:
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
IEC 60695-11-3:2012.pdf
机械设计电话自动组装产线非常好的设计图纸100%好用.zip
010editor是一款小巧专业的实用型编程工具,010editor官方版功能强悍,便捷好用,支持用户进行编辑十六进制和二进制,可选择自己需要的进制进行编辑,还可对任何的文件进行编辑。
点上面 附件图标,上传附件后可设置现金定价 2007-2022年各省份节能环保 支出占一般预算支出面板数据 已经整理成省级面板数据 手动整理不易
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
保护大堡礁(pytorch + yolov5训练自定义数据集)-python源码.zip
PPT经典背景音乐库 名称: 电视台常用图片呈现背景音乐 名称: 雄伟大气的曲子