各种编程技术
子版面
1,773个主题在此版面
-
PHP serialize()函数 PHP 可用的函数PHP 可用的函数 serialize() 函数用于序列化对象或数组,并返回一个字符串。 serialize() 函数序列化对象后,可以很方便的将它传递给其他需要它的地方,且其类型和结构不会改变。 如果想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。 string serialize ( mixed $value ) 参数说明: $value: 要序列化的对象或数组。 返回值 返回一个字符串。 PHP unserialize()函数 unserialize() 函数用于将通过 serialize() 函数序列化后的对象或数组进行反序列化,并返回原始的对象结构。 当使用 serialize() 函数将对象序列化后,可以将这个得到的字符串保存到文件或者数据库中, 然后在需要的地方使用 unserialize() 函数将这个字符串反序列化,unserialize() 函数的语法格式如下: mixed unserialize ( string $str ) 参数说明: $str: 序列化后的字符串。 返回值 返回的是转换之后的值,可为 integer、float、string、array 或 object。 如果传递的字符串不可解序列化,则返回 FALSE,并产生一个 E_NOTICE。 PHP serialize()和unserialize()注意事项 当数组值包含如双引号、单引号或冒号等字符时,它们被反序列化后,可能…
-
- 0 篇回复
- 112 次查看
-
-
PHP: 使用 PHP - Manual https://www.php.net/manual/zh/faq.using.php#faq.using.shorthandbytes 注意: kilobyte 和 kibibyte 的区别 PHP 将一个千字节(kilobyte)描述为等于 1024 字节(bytes),而 IEC 标准则认为这是一个 kibibyte。结论:k 和 K = 1024 bytes.
-
- 0 篇回复
- 121 次查看
-
-
如何严格设置php中session过期时间 - yangboom - 博客园 https://www.cnblogs.com/YangJieCheng/p/7268378.html 如何严格限制session在30分钟后过期! 1.设置客户端cookie的lifetime为30分钟; 2.设置session的最大存活周期也为30分钟; 3.为每个session值加入时间戳,然后在程序调用时进行判断; 至于为什么,我们首先来了解下PHP中session的基本原理: php中的session有效期默认是1440秒(24分钟),也就是说,客户端超过24分钟没有刷新,当前session就会失效。当然如果用户关闭了浏览器,会话也就结束了,Session自然也不存在了! 大家知道,Session储存在服务器端,根据客户端提供的SessionID来得到这个用户的文件,然后读取文件,取得变量的值,SessionID可以使用客户端的Cookie或者Http1.1协议的 Query_String(就是访问的URL的“?”后面的部分)来传送给服务器,然后服务器读取Session的目录…… 要控制Session的生命周期,首先我们需要了解一下php.ini关于Session的相关设置(打开php.ini文件,在“[Session]”部分): 1、session.use_cookies:默认的值是“1”,代表SessionID使用Cookie来传递,反之就是使用Query_String来传递; 2、session.name:这个就是SessionID储存的…
-
- 0 篇回复
- 117 次查看
-
-
session垃圾回收机制 - wen_php - 博客园 https://www.cnblogs.com/wenphp/p/4871500.html 在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁;这是PHP的GC垃圾处理机制,防止内存溢出。 GC的工作就是扫描所有的Session信息,用当前时间减去session最后修改的时间,同session.gc_maxlifetime参数进行比较,如果生存时间超过gc_maxlifetime(默认24分钟),就将该session删除。 当一个有效的请求发生时,PHP 会根据全局变量 session.gc_probability和session.gc_divisor的值,来决定是否启用一个GC, 在默认情况下,session.gc_probability=1, session.gc_divisor =100也就是说有1%的可能性启动GC(也就是说100个请求中只有一个gc会伴随100个中的某个请求而启动). 但是,如果你Web服务器有多个站点,多个站点时,GC处理session可能会出现意想不到的结果,原因就是:GC在工作时,并不会区分不同站点的session. 那么这个时候怎么解决呢? 1. 修改session.save_path,或使用session_save_path()让每个站点的session保存到一个专用目录, 2. 提供GC的启动率,自然,GC的启动率提高,系统的性能也会相应减低,不推荐。 3. 在代码中判断当前session…
-
- 0 篇回复
- 111 次查看
-
-
PHP定时器实现每隔几秒运行一次 - 谦信君 - 博客园 https://www.cnblogs.com/kenshinobiy/p/5895299.html php是服务器端脚本了并不像js那样有专业的settimeout函数来定时执行了,但只要浏览器不关闭各阶层是可以做到了,下面一起来看看。 下面写个简单例子来讲解这个方法。 <?php ignore_user_abort();//关闭浏览器仍然执行 set_time_limit(0);//让程序一直执行下去 $interval=3;//每隔一定时间运行 do{ $msg=date("Y-m-d H:i:s"); file_put_contents("log.log",$msg,FILE_APPEND);//记录日志 sleep($interval);//等待时间,进行下一次操作。 }while(true); ?> 需要说明的是:程序没有写结束判断语句,他会无限循环下去。当然如果想停止的话,可以重启apache,重启后就无效了。想再次进行定时执行,那么把这段代码再一次运行。 上面简单例子可以说明这个原理。 那么针对上面的例子,我可以进行一下改良方案。 你需要一个执行脚本的开关,你可以用外部文件引入的方法来实现,在while循环的时候,include开关变量即可。那么就可以这样实现: 建立外部引入变量文件 switch.php 内容如下: <?php return 1;//1执行脚本 0退出执行脚本 ?> 改良脚本如下…
-
- 0 篇回复
- 121 次查看
-
-
关于.user.ini的相关信息及基本利用可以参考一下文章: https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html 我之所以写下这篇随笔,是因为在学习的过程中产生了一些误解及困惑,尽管已经解决,但还是记下来比较好。 1. CGI/FASTCGI 在php手册中已经指明,.user.ini可以利用在CGI/FASTCGI模式下,即不管是CGI,还是FASTCGI都是可以的。 2. php版本问题 要想利用.user.ini,除了需要服务器处于CGI或FASTCGI模式下,还需要php版本符合一定条件(可能是需要php版本高于5.3),经过测试,php5.2.17无法利用.user.ini,该版本下的php.ini中缺少.user.ini的相关配置项——user_ini.cache_ttl和user_ini.filename;php5.4.22可以利用.user.ini,php.ini中也包含.user.ini的相关配置项。 3.上传目录包含php可执行文件 只要目录中包含php文件,就可以利用.user.ini执行相关代码。其实只要当前站点的某一页面是php就可以了,比如index.php
-
- 0 篇回复
- 132 次查看
-
-
文件上传 文件上传漏洞是指文件上传功能没有对上传的文件做合理严谨的过滤,导致用户可以利用此功能,上传能被服务端解析执行的文件,并通过此文件获得执行服务端命令的能力。 上传绕过 类型判断 常规上传 前端绕过 使用Burp等抓包工具修改文件后缀/类型 后端绕过 文件上传常见验证: 后缀名,类型,文件头等 后缀名:黑名单,白名单 文件类型:MTME信息 文件头:文件数据头部信息 黑名单绕过 尝试特殊后缀(可能未过滤完全) 利用Burp fuzz测试 PHP: ".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2","pHp1",".Html",".Htm",".pHtml" JSP: ".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml" ASP: ".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf" 后缀大小写绕过 躲避黑名单检测 重写解析规则 (1)Apache下 …
-
- 0 篇回复
- 135 次查看
-
-
php中设置session过期时间方法 -php手册-PHP中文网 https://www.php.cn/php-notebook-45754.html 在apache与php的环境中默认过期时间是20分钟左右,那么我们要怎么设置session过期呢,下面看具体方法总结。 我们最常用的是在php程序中设置 代码如下 复制代码 if(!isset($_SESSION['last_access'])||(time()-$_SESSION['last_access'])>60) $_SESSION['last_access'] = time(); ?> 这样就搞定了,如果要设置过期的话也可以在程序中实例 代码如下 复制代码 unset($_SESSION['last_access']) 或 $_SESSION['last_access']=''; ?> session有过期的机制 session.gc_maxlifetime 原来session 过期是一个小概率的事件,分别使用session.gc_probability和session.gc_divisor 来确定运行session 中gc 的概率 session.gc_probability和session.gc_divisor的默认值分别为 1和100 分别为分子和分母 所以session中gc的概率运行机会为1% 。如果修改这两个值,则会降低php的效率。所以这种方法是不对的!! 所以,修改php.ini文件中的gc_maxlifetime…
-
- 0 篇回复
- 108 次查看
-
-
需求:在一张背景图上添加二维码(带不同),并且个人名字,联系方式和个人头像。 思路:二维码和头像相当于往图片上添加图片,个人姓名和联系方式相当于玩图片上添加文字,这就是文字/图案水印了。思路就是上网百度!! 历经辛苦,找到一篇看起来可能会明白,简洁,简短的文章:(http://www.jb51.net/article/44829.htm) //添加图片水印 $dst_path = 'dst.jpg'; $src_path = 'src.jpg'; //创建图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); $src = imagecreatefromstring(file_get_contents($src_path)); //获取水印图片的宽高 list($src_w, $src_h) = getimagesize($src_path); //将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果 imagecopymerge($dst, $src, 10, 10, 0, 0, $src_w, $src_h, 50); //如果水印图片本身带透明色,则使用imagecopy方法 //imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h); //输出图片 list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path); swit…
-
- 0 篇回复
- 155 次查看
-
-
手机App中判断平台,可以根据$_SERVER['HTTP_USER_AGENT']中的内容来判断浏览器类型或手机平台。 iPhone UA:Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5 iPad UA:Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 Android UA:Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36 然后利用下面的方法即可判断操作平台: <?php getOS(); function getOS() { $ua = $_SERVER['HTTP_USER_AGENT'];//这里只进行IOS和Android两个操作系统的判断,其他操作系统原理一样 …
-
- 0 篇回复
- 111 次查看
-
-
php中return与return false区别?能举个项目常用的例子吗?_百度知道 https://zhidao.baidu.com/question/1767458165083536020.html is8888 2014-11-22 · TA获得超过691个赞 知道小有建树答主 回答量:530 采纳率:0% 帮助的人:424万 我也去答题访问个人页 关注 return表示退出执行,即结束一个函数的执行,这个时候事实上可以理解返回的是空值(void),如果你了解java的话就很清楚了,在java里面,如果一个函数没有返回值,那么返回的就是void。但是php是弱类型语言,并没有强制限定,也没有提供void关键字,且定义的函数可以返回多中类型的值。 return false就简单了,返回的是一个boolean结果,通常用于进行一些判断。 当然,如果返回值你并没有使用,return void的时候你也可以使用return false,即,如果一个函数只是执行一些操作,但是你并不需要返回的结果,直接使用return和return false、return true都是可以的,这个时候其实重点在return上,用于结束函数的执行。 例子就不提供了吧,很简单的。
-
- 0 篇回复
- 126 次查看
-
-
PHP isset()与empty()的使用区别详解_php基础_脚本之家 https://www.jb51.net/article/24666.htm PHP的isset()函数 一般用来检测变量是否设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:检测变量是否设置 返回值: 若变量不存在则返回 FALSE 若变量存在且其值为NULL,也返回 FALSE 若变量存在且值不为NULL,则返回 TURE 同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE 版本:PHP 3, PHP 4, PHP 5 更多说明: 使用 unset() 释放变量之后,它将不再是 isset()。 PHP函数isset()只能用于变量,传递任何其它参数都将造成解析错误。 检测常量是否已设置可使用 defined() 函数。 PHP的empty()函数 判断值为否为空 格式:bool empty ( mixed var ) 功能:检查一个变量是否为空 返回值: 若变量不存在则返回 TRUE 若变量存在且其值为""、0、"0"、NULL、、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 TURE 若变量存在且值不为""、0、"0"、NULL、、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 FALSE 版本:PHP 3, PHP 4, PHP 5 更多说明: empty()的返回值=!(…
-
- 0 篇回复
- 98 次查看
-
-
1,这个是我个人的博客 服务器也是自己的 所以就比较随便了 代码的同步 1,可以使用webhook 进行代码同步 不过我配置了很长时间 烦的要死 没成功,2,可以走服务器的计划任务 进行代码同步 不过 我选了最费劲的。 最近接触了 workerman 框架 然后使用的里面的定时器去定时拉取 代码。好了废话不说了 2,在服务器 /var/www 下面下载框架的东西 composer require workerman/workerman下载好之后 这就是一个简单的框架的内容了 3,然后在项目的根目录 创建 类似文件 ll 可以看到有 start.php 文件 我们创建一个文件 mstart.php touch mstart.php 代码复制过来之后 就少了 <?php use \Workerman\Worker; use \Workerman\Timer; require_once __DIR__ . '/vendor/autoload.php'; $task = new Worker(); $task->name='拉取代码定时器'; $ task->onWorkerStart = function($task) { // 每30秒执行一次 $time_interval = 30; Timer::add($time_interval, function() { //仓库地址 $remote = '你的仓库地址'; $local = '你的项目地址'; echo shell_exec(…
-
- 0 篇回复
- 79 次查看
-
-
6. 部署Zabbix监控 6.1 安装mysql [root@ubuntu ~]#hostnamectl set-hostname mysql-master;exit [root@mysql-master ~]# apt install -y mysql-server #配置mysql,不然后面登不进mysql [root@mysql-master ~]# vim /etc/mysql/mysql.conf.d/mysqld.cnf bind-address = 0.0.0.0 #重启并开机启动 [root@mysql-master ~]# systemctl restart mysql [root@mysql-master ~]# systemctl enable --now mysql #mysql 进入数据库创建账户并授权 [root@mysql-master ~]# mysql mysql> create database zabbix_server character set utf8 collate utf8_bin; mysql> grant all privileges on zabbix_server.* to zabbix@'172.31.%.%' identified by 'Mmagedu0!'; mysql> flush privileges; mysql> quit 6.2 z…
-
- 0 篇回复
- 103 次查看
-
-
Think php6.0官网网址:序言 · ThinkPHP6.0完全开发手册 · 看云 (kancloud.cn) 下面是基础配置 第一步:创建TP框架,命名为tp composer create-project topthink/think tp 第二步:点击架构里面的多应用模式,安装多应用模式拓展 composer require topthink/think-multi-app 第三步:点击视图里面的模板引擎,安装视图拓展 composer require topthink/think-view 第四步:点击tp框架里面的 .example.env 文件,将该文件重命名为 .env 第五步:创建一个名字为demo的多应用目录,该目录保存在app下 php think build demo 第六步:创建一个名为Goods的控制器 php think make:controller demo@Goods --plain 第七步:创建一个名为Good的模型 php think make:model demo@Good 第八步:在demo目录下面创建路由名为route的目录,并在该目录里面创建route.php路由文件,并借鉴框架里面的route目录下面的app.php路由文件,将下面路径复制到新建的route.php路由文件里面 use think\facade\Route; 下面配置域名数据库 在小皮里面配置第一域名www.2006a.com,并且根目录选择tp框架里面的publi…
-
- 0 篇回复
- 97 次查看
-
-
本文演示使用 Docker 安装 Ubuntu、CentOS、Nginx、Apache、Tomcat、Redis、MariaDB(MySQL)、Python、PHP 和 NodeJS。 1. 安装 Ubuntu Ubuntu 是基于 Debian 的 Linux 操作系统。 1) 查看可用的 Ubuntu 版本 访问 Ubuntu 镜像库地址: https://hub.docker.com/_/ubuntu?tab=tags&page=1。 可以通过 Sort by 查看其他版本的 Ubuntu,默认是最新版本 ubuntu:latest。 可以在下拉列表中找到其他想要的版本,也可以用 docker search 命令来查看可用版本: $ docker search ubuntu 2) 拉取 Ubuntu 镜像 $ docker pull ubuntu # 相当于 docker pull ubuntu:latest $ docker images # 查看镜像列表 3) 运行容器,并且可以通过 exec 命令进入 ubuntu 容器 $ docker run -itd --name ubuntu-test ubuntu $ docker ps # 查看运行的容器列表 $ docker exec …
-
- 0 篇回复
- 93 次查看
-
-
Zabbix监控服务 目录Zabbix监控服务一、 zabbix介绍二、 zabbix特点zabbix的主要特点:zabbix主要功能(监控指标):zabbix监控范畴三、zabbix配置文件zabbix配置文件有两种:四、部署zabbix五.zabbix服务端配置六、zabbix服务端web界面安装与配置1.zabbix web界面安装前配置2.安装zabbix web界面登录zabbix 一、 zabbix介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 zabbix由2部分构成,zabbix server与可选组件zabbix agent。 zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Ubuntu,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。 zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。 zabbix server可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据(agent方式),同时还可被动接收zabbix agent发送的数据(…
-
- 0 篇回复
- 93 次查看
-
-
使用WordPress搭建网站时,如果你是基于IIS服务器搭建的,肯定会遇到这个问题,就是固定链接设置好后,网址会出现烦人的index.php和category这两个关键字。 举个例子,博客的分类是wordpress,博客的固定链接是how-to-create-wordpress.html。那么完整的地址就是 https://yourwebsite/wordpress https://yourwebsite/wordpress/blog1.html 这么看着多友好,一目了然就知道博客在什么分类下,博客的内容是什么?结果非要搞成下面这样。感觉就一个字:low https://yourwebsite/index.php/category/wordpress https://yourwebsite/index.php/category/wordpress/blog1.html 传送门: WordPress的网站链接,如何去掉index.php和category?
-
- 0 篇回复
- 106 次查看
-
-
zabbix介绍 zabbix是由Alexei Vladishev 开发的一种网络监视、管理系统,基于Server-Client架构。可用于监视各种网络服务、服务器和网络机器等状态。 使用各种Database-end 如 MySQL,PostgreSQL,SQlite,Oracle 或IBMDB2储存资料。Server端基于C语言、Web管理端frontend则是基于PHP所制作的。 zabbix可以使用多种方式监视。可以只使用Simple Check不需要安装 Client端,亦可基于SMTP或HTTP… 各种协议定制监视。 在客户端如UNIX,Windows 中安装zabbix Agent之后,可监视CPULoad、网络使用状况、硬盘容量等各种状态。而就算没有安装Agent 在监视对象中,zabbix 也可以经由SNMP、TCP、ICMP、利用IPMI、SSH、telnet 对目标进行监视。 zabbbix自带的Item足够满足普通小公司的监控需求,对于大公司也可以设定自定义的Item,自动生成报表,也有API可以和其他系统集成。 zabbix由2部分构成,zabbix server与可选组件zabbix agent。 zabbix特点 zabbix的主要特点: 安装与配置简单,学习成本低 支持多语言(包括中文) 免费开源 自动发现服务器与网络设备 分布式监视以及WEB集中管理功能 可以无agent监视 用户安全认证和柔软的授权方式 通过WEB界面设置或查看监视结果 email等通知功能 zabbix主要功能: …
-
- 0 篇回复
- 87 次查看
-
-
题目如下: <?php highlight_file('source.txt'); echo "<br><br>"; $flag = 'xxxxxxxx'; $giveme = 'can can need flag!'; $getout = 'No! flag.Try again. Come on!'; if(!isset($_GET['flag']) && !isset($_POST['flag'])){ exit($giveme); } if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){ exit($getout); } foreach ($_POST as $key => $value) { $$key = $value; } foreach ($_GET as $key => $value) { $$key = $$value; } echo 'the flag is : ' . $flag; ?> 代码分析: 第一个if判断get请求和post请求的参数是否为flag,第二个if判断get请求参数和post请求参数为flag的值是否为flag。综上,代码限制的条件是,要有get和post的请求参数为flag,注意这里这是要求有这个参数而已,没有说参数唯一。其次要求我们参数为flag时其值都不能出现flag。接着分析,第一个foreach是关于post请…
-
- 0 篇回复
- 83 次查看
-