
PHP
八点博客(钏)
专注分享技术交流
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用PhpOffice\PhpSpreadsheet生成Excel表格
1、安装PhpOffice\PhpSpreadsheetcomposer require phpoffice/phpspreadsheet2、引入use PhpOffice\PhpSpreadsheet\Helper\Sample;use PhpOffice\PhpSpreadsheet\IOFactory;use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\Writer\Xlsx;use PhpOffi原创 2021-08-28 14:03:25 · 923 阅读 · 0 评论 -
laravel 开发拓展包
1、在根目录下新建packages/itchuan/src/MD5Hasher.php并写入<?phpnamespace Itchuan\Hasher;class MD5Hasher{ public function make($value, array $options = []) { $salt = isset($options['salt']) ? $options['salt'] : ''; return hash(原创 2020-10-09 09:56:03 · 367 阅读 · 0 评论 -
PHP设计模式(5):策略模式
策略模式,将一组特定的行为和算法封装成类,以适应某些特定的上下文环境。eg:假如有一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有的广告位展示不同的广告。在传统的代码中,都是在系统中加入各种if else的判断,硬编码的方式。如果有一天增加了一种用户,就需要改写代码。使用策略模式,如果新增加一种用户类型,只需要增加一种策略就可以。其他所有的地方只需要使用不同的策略就可以。首先声明策略的接口文件,约定了策略的包含的行为。然后,定义各个具体的策略实现类。UserStrategy..原创 2020-09-22 17:17:42 · 192 阅读 · 0 评论 -
PHP设计模式(4):适配器模式
将各种截然不同的函数接口封装成统一的API。PHP中的数据库操作有MySQL,MySQLi,PDO三种,可以用适配器模式统一成一致,使不同的数据库操作,统一成一样的API。类似的场景还有cache适配器,可以将memcache,redis,file,apc等不同的缓存函数,统一成一致。首先定义一个接口(有几个方法,以及相应的参数)。然后,有几种不同的情况,就写几个类实现该接口。将完成相似功能的函数,统一成一致的方法。统一接口<?phpnamespace IMooc;interface原创 2020-09-22 17:17:20 · 161 阅读 · 0 评论 -
PHP设计模式(3):注册模式
将对象注册到全局树上,就可以被任意地方访问了注册模式,解决全局共享和交换对象。已经创建好的对象,挂在到某个全局可以使用的数组上,在需要使用的时候,直接从该数组上获取即可。将对象注册到全局的树上。任何地方直接去访问。<?phpclass Register{ private static $objects; public static function set($key,$value){ self::$objects[$key] = $value; //将对象放到树上 }原创 2020-09-22 17:17:01 · 183 阅读 · 0 评论 -
PHP设计模式(2):工厂模式
工厂模式 一个类通过本身的静态方法来,实例化一个类并返回一个实例对象;classFactory{staticpublicfunctionfactory($class_name){returnnew$class_name();}}如果已经使用的类内部发生改变,哪不需要在所有的地方都改变,只需要在类工厂类里改变既可,比如:连接数据库,可以使用mysql 、mysqli、pdo,根据不同参数配置使用不同的数据库操作类做支付接口的时候,未来...原创 2020-09-22 17:16:42 · 164 阅读 · 0 评论 -
PHP设计模式(1):单例模式
Singleton:单例模式单例模式是最常见的模式之一,在运行时为某个特定的类创建仅有一个可访问的实例。特点:三私一公私有属性:用于保存实例私有的构造方法:防止创建实例私有的克隆方法:防止复制实例公有的静态方法:对外界提供实例class Singleton{ //私有属性,用于保存实例 private static $instance; //构造方法私有化,防止外部创建实例 private function __construct(){}原创 2020-09-22 17:14:57 · 259 阅读 · 0 评论 -
PHP AJAX JSONP实现跨域请求使用实例
转载自:https://www.cnblogs.com/xcxc/p/3729660.html实例1test.html 1 2 3 4 5 6 7 8 9 10 11 12 <!doctypehtml> <html> <he...原创 2020-02-16 17:52:51 · 262 阅读 · 0 评论 -
PHP 根据IP地址获取所在城市
header('Content-Type:text/html;Charset=utf-8'); function GetIp(){ $realip = ''; $unknown = 'unknown'; if (isset($_SERVER)){ if(isset($_SERVER['HTTP_X_FORWARDED_FOR']转载 2017-12-05 20:06:49 · 792 阅读 · 0 评论 -
使用ueditor进行图片上传、保存、存入数据库
话不多说,直接写方法(PHP版本的)。打开php/config.json文件 "imageActionName": "uploadimage", /* 执行上传图片的action名称 */ "imageFieldName": "upfile", /* 提交的图片表单名称 */ "imageMaxSize": 20480000, /* 上传大小限制,单位B */ "imageA原创 2017-12-12 16:54:52 · 4092 阅读 · 4 评论 -
php实现比较两个字符串日期大小的方法
php实现比较两个字符串日期大小的方法function dateBDate($date1, $date2) {// 日期1是否大于日期2 $month1 = date("m", strtotime($date1)); $month2 = date("m", strtotime($date2)); $day1 = date("d",原创 2017-12-14 15:03:58 · 2585 阅读 · 0 评论 -
PHP、MySQL、Ajax实现限制ip、浏览器投票
思路(1)未点赞时,点赞图标和点赞数字都是灰色的。 (2)用户第一次点赞时,ajax用php获取到ip、操作系统类型、浏览器类型。将三个字符串拼接后,用md5函数加密后存入MySQL数据库的md5value字段中。 (3)此时点赞图标和点赞数字变为红色。 (4)当用户使用同一ip、操作系统、浏览器再次访问时,先从数据库读取数据(查询条件是where md5(ipsysbrowser)=md5v原创 2017-12-10 22:06:45 · 568 阅读 · 0 评论 -
虚拟主机使用phpmailer发送邮件
摘要:phpmailer发送邮件在本地测试正常,但是放大虚拟主机上不能用,上网查阅了各种资料,发现原因有以下几种,只要保证一下几点实现,就能发送了,当然不排除例外,如果无法发送,可以联系我QQ1435661488。 1、fscokopen应处于打开状态。 大部分主机提供商为了安全着想,已经把fscokopen函数禁用了。可以在虚拟主机上新建test.php文件用function_exists函数原创 2017-12-09 10:40:41 · 1301 阅读 · 0 评论 -
PhpStorm支持dwt文件代码高亮显示设置方法
使用webstorm时,在打开不常用的后缀名文件时,不能使代码高亮和自动补全。下面是设置方法:1、打开 file--settings2、搜索 file type3、找到 smarty4、增加一项 ('*.dwt') 5、完成。原创 2017-03-26 19:44:22 · 4836 阅读 · 0 评论 -
Yii2数据库操作
1、使用gii创建user model 和 user controllernamespace frontend\controllers;use app\models\User;use yii\data\Pagination;class MsgController extends \yii\web\Controller{public funct原创 2017-12-20 16:48:28 · 368 阅读 · 0 评论 -
zyUpload多图上传插件的使用(基于php jquery)
1、首先下载demo(点击下载) 2、确保php环境在5.3以上。 3、将下载的文件解压后,将demo文件夹移动到主机目录localhost文件夹下面。 4、打开浏览器输入(http://localhost/demo/demo.html) 5、如果出现如下界面说明成功。6、配置(1)上传图片类型、大小配置。(2)上传图片位置、名称、信息显示配置。(3)操作面板配置。7、上传后的图片在d原创 2017-06-14 13:37:39 · 5205 阅读 · 0 评论 -
Ecshop模板开发(六):商品详情页收藏商品实现
1、html代码<a href="#" onclick="javascript:collect({$goods.goods_id})"><button>收藏该商品</button></a><br>2、jsfunction collect(goods_id) { //Ajax.call('user.php?act=collect', 'id=' + goodsId, collectR原创 2017-04-03 16:06:16 · 2183 阅读 · 0 评论 -
phpStudy在linux下的使用说明
http://blog.youkuaiyun.com/xie_jinfen/article/details/50517027http://www.cnblogs.com/hopelooking/p/6187463.htmlhttp://blog.youkuaiyun.com/m0_38005162/article/details/68488436http://blog.youkuaiyun.com/qq_21794887/articl转载 2017-08-19 16:01:01 · 2965 阅读 · 0 评论 -
PHP7(一):数据库操作(连接、增删改查操作)
1、连接(mysqli方式)$con = new mysqli("localhost", "username", "password", "databasename");2、查询 $con->query('set names utf8;'); $sql = "SELECT * FROM tablename"; $result = $con->query($sql);原创 2017-08-18 13:53:52 · 15476 阅读 · 0 评论 -
PHP中的日期和时间函数
开发过程中,常用日期处理函数,时间戳处理函数等,如下讲解:<?phpecho date('Y-m-d h:i:s',time());//运行结果(年月日时分秒,“-”间隔):2014-09-12 06:28:32echo date('Y-m-d',time());//运行结果(年月日,“-”间隔):2014-09-12echo date('Y-m-d',strtotime(date('Y-m-d'转载 2017-08-18 13:39:32 · 270 阅读 · 0 评论 -
yii2框架(一):下载与安装
1、下载composer(https://getcomposer.org/Composer-Setup.exe) 2、安装composer(路径选择为php.exe所在路径,且确保php.ini中openssl打开,php版本在5.5以上)3、进入网站目录,以此为例(D:\phps\WWW),下载yii21、切换目录cd D:\phps\WWW2、下载插件composer global requi原创 2017-05-09 22:23:45 · 7523 阅读 · 1 评论 -
yii2框架(二):控制器和视图
1、文件目录controllers 控制层views 视图层2、在controllers文件下新建 TestController.php 文件。<?phpnamespace app\controllers;use yii\web\Controller;class TestController extends Controller{ public function actionI原创 2017-05-10 16:07:57 · 833 阅读 · 0 评论 -
Ecshop模板开发(二十九):商品列表、排序、分页显示
1、goods_list.lbi<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div class="box"> <div class="box_1"> <h3> <span>{$lang.goods_list}</span><a name='goods_list原创 2017-04-16 16:03:52 · 1347 阅读 · 0 评论 -
Ecshop模板开发(二十八):列表页最新、最热、精品、促销商品显示
1、recommend_new.lbi(最新商品)<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><!-- {if $new_goods} --><!-- {if $cat_rec_sign neq 1} --><div class="box"><div class="box_2 centerPadd">原创 2017-04-15 22:25:57 · 1027 阅读 · 0 评论 -
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法,主要使用到了 php 的时间函数 mktime。下面首先还是直奔主题以示例说明如何使用 mktime 获取今日、昨日、上周、本月的起始时间戳和结束时间戳,然后在介绍一下 mktime 函数作用和用法。01//php获取今日开始时间戳和结束时间戳0转载 2017-12-14 15:23:37 · 339 阅读 · 0 评论 -
php获取服务器操作系统等信息
function getServerInfo(){ $info = array( '操作系统'=>PHP_OS, '运行环境'=>$_SERVER["SERVER_SOFTWARE"], '主机名'=>$_SERVER['SERVER_NAME'], 'WEB服务端口'=>$_SERV原创 2017-12-14 16:35:52 · 1043 阅读 · 0 评论 -
thinkphp5使用phpmailer发送邮件
首先声明:由于要做邮件发送功能,所以要把phpmailer和smtp这两个类文件引入到tp5中;官方文档说的不详细;因此我在此来说。明一下; 1、在public同级目录下的extend文件夹下 》创建mail文件夹 》mail文件夹内放入phpmailer.php和smtp.php文件。 目录结构是extend 》 mail 》phpmailer.phpextend 》 mail 》smtp.原创 2017-12-06 08:48:22 · 2812 阅读 · 2 评论 -
PHP基础开发技巧集锦(4):正则表达式
原文链接:http://blog.itchuan.net/posts/54一、校验数字的表达式1 数字:^[0-9]*$2 n位的数字:^\d{n}$3 至少n位的数字:^\d{n,}$4 m-n位的数字:^\d{m,n}$5 零和非零开头的数字:^(0|[1-9][0-9]*)$6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,...原创 2019-04-13 17:34:17 · 147 阅读 · 0 评论 -
PHP抽奖程序
/* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内, * 如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间, * 在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的。 * 这样 筛选到...原创 2019-04-13 15:45:12 · 1529 阅读 · 0 评论 -
PHP运算符使用技巧集锦(1):位运算符 ^ & 的使用
原文地址:http://blog.itchuan.net/posts/49^:按位异或。将值转化为二进制后进行比较,相同位置只要有一个为1则该位置结果为1,否则为0。举例如下:$a=1;//二进制为00001$b=2;//二进制为00010echo $a^$b;// 00011 就是3,因此输出3&:按位与。将值转化为二进制后进行比较,相同位置只有两个全为1则该位置结果为...原创 2019-04-12 21:42:44 · 1063 阅读 · 0 评论 -
PHP二维数组相关应用(1)
问题:如何由二维数组 a、b、c 得到 d$a= array( array( 'name' =>'vip', 'aname'=>'123', 'sex'=>1 ), array( 'name' =>'vip1', 'aname'=>'1233', ...原创 2019-04-12 20:25:44 · 390 阅读 · 0 评论 -
Laravel技巧集锦(26):使用select2和aiax实现下拉框选择
具体功能:用户输入字符,ajax自动去查询数据库,如果数据库中有记录,则返回结果在下拉框中;如果没有,用户Enter回车键自己创建话题。1、下载selec2.min.js、selec2.min.css并引入到项目中。<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2....原创 2019-03-23 11:02:19 · 1308 阅读 · 0 评论 -
Laravel框架Warning: require(../vendor/autoload.php): failed to open stream: No such file or directory
最近在学习Laravel框架,在phpstudy下使用composer+laravel安装器的方式安装了Laravel,但是访问的时候报错:Warning: require(D:\phpstudy\WWW\public\myblog\bootstrap/../vendor/autoload.php): failed to open stream: No such file or directo...原创 2019-02-23 16:36:51 · 10658 阅读 · 1 评论 -
ThinkPHP 重写模式去除index.php 出现 File Not Found 问题解决
1、httpd.conf配置文件中加载了mod_rewrite.so模块2、AllowOverride None 将None改为 All3、把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下(public/index.php)<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Rewrite...原创 2018-07-04 13:24:33 · 3828 阅读 · 0 评论 -
thinkphp5 开启多语言
1、在applicatio/config.php中设置 'lang_switch_on' => true,'default_lang' => 'zh-cn',2、在/application/common.php中设置use think\Lang;Lang::setAllowLangList(['zh-cn','en-us','ja-jp','ru-ru']);3、在applica...原创 2018-04-19 22:13:54 · 892 阅读 · 0 评论 -
yii2中QQ第三方登录网站
原文链接http://zhang-chuan.com/apre/web/index.php?r=blog%2Fdetail&id=501、先注册成为开发者,并实名认证。https://connect.qq.com2、创建应用。https://connect.qq.com/manage.html#/appcreate/web(回调域名一般是自己的主域名)3、应用审核成功后,获取appid a...原创 2018-02-24 10:35:45 · 1389 阅读 · 0 评论 -
PHP获取文件大小并转化为KB、MB、GB单位
function getSize($filesize) { if($filesize >= 1073741824) { $filesize = round($filesize / 1073741824 * 100) / 100 . ' GB'; } elseif($filesize >= 1048576) { $fil...原创 2018-02-24 10:32:57 · 8055 阅读 · 1 评论 -
使用PHPMail发送邮箱(163邮箱为例)
1、下载phpmail压缩包,并解压。2、创建index.html文件。并写入代码。<form action="" method="post"> <p>收件人邮箱:<input type="text" name="toemail" id="mail"/></p> <p>原创 2017-01-22 12:30:40 · 25983 阅读 · 5 评论 -
使用百度统计API接口抓取数据
1、https://tongji.baidu.com/web/welcome/login 注册并登录账号。 2、添加站点并安装代码(手工和自动都可以);建议添加在网站底部,这样可有效过滤无效点击。 3、安装代码后,就可以在百度统计上面看到网站浏览数据,但大多数时候,我们还是希望直接能在我们自己的网站后台看到数据,比较方便。 4、登录百度统计,管理 》其他设置 》数据导出服务。获取TOKEN,下原创 2017-12-17 21:12:03 · 15250 阅读 · 1 评论 -
yii2使用七牛上传图片文件
原文链接http://zhang-chuan.com/apre/web/index.php?r=blog%2Fdetail&id=481、七牛云官方注册一个账号,并进行实名认证。https://www.qiniu.com/2、新建对象存储空间,储存空间的名字就是bucket 。https://portal.qiniu.com/bucket/create3、复制AK、SK。https://p...原创 2018-02-24 10:42:26 · 1214 阅读 · 1 评论