PHP
72个主题在此版块
-
- 1 篇回复
- 217 次查看
首先打开题目,一眼看到关键 可以通过工具搜查出来备份文件,博主使用御剑不知怎么的没扫出来,手动验证www.zip或者index.php.bak 然后下载压缩包,解压得到 浏览三个源码文件 <?php include 'flag.php'; error_reporting(0); class Name{ private $username = 'nonono'; private $password = 'yesyes'; public function __construct($username,$password){ $this->username = $username; $this->password = $password; } function __wakeup(){ $this->username = 'guest'; } function __destruct(){ if ($this->password != 100) { echo "</br>NO!!!hacker!!!&l…
淘气BB5的最后回复, -
- 0 篇回复
- 160 次查看
<?php use ZipArchive; class Zip { /** * @var array $files 需要压缩的文件或文件夹 */ public $files = []; /** * 排除的文件 */ public $notFile = []; /** * 压缩或者解压密码 */ public $passowrd = null; //压缩包名字及输出地址 public $zipName = 'package.zip'; //检测的根目录,默认为APP根目录 public $rootPath = AR; private function addDir($folder, $zipFile, $rootPath, $folderSub = null) { // $folder = $this->rootPath . $folderb; if (is_dir($folder)) { $handle = opendir($folder); while (false !== $f = readdir($handle)) { if ($f != '.' && $f != '..') { // R…
KaiWn的最后回复, -
- 0 篇回复
- 127 次查看
使用mb_substr()截取就不会出现乱码了 可以用mb_substr()/mb_strcut()这个函数,mb_substr()/mb_strcut()的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。 例:echo mb_substr("php中文字符encode",0,4,"utf-8");
KaiWn的最后回复, -
- 0 篇回复
- 138 次查看
以下PHP代码可获取当前年份,具体显示比如:2022 <?php echodate('Y'); ?> 以下PHP代码可获取当前年份,具体显示比如:22 <?php echodate('y'); ?> 以下PHP代码可获取当前具体年月,具体显示比如:2022年2月1日 <?php echodate("d-m-Y") ?>
KaiWn的最后回复, -
- 0 篇回复
- 143 次查看
题目如下: <?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。接着…
KaiWn的最后回复, -
- 0 篇回复
- 148 次查看
Zabbix监控服务 目录 Zabbix监控服务 一、 zabbix介绍 二、 zabbix特点 zabbix的主要特点: zabbix主要功能(监控指标): zabbix监控范畴 三、zabbix配置文件 zabbix配置文件有两种: 四、部署zabbix 五.zabbix服务端配置 六、zabbix服务端web界面安装与配置 1.zabbix web界面安装前配置 2.安装zabbix web界面 登录zabbix 一、 zabbix介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快…
KaiWn的最后回复, -
- 0 篇回复
- 171 次查看
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路由文件,将下面路径复制到新建的rout…
KaiWn的最后回复, -
- 0 篇回复
- 140 次查看
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_probab…
KaiWn的最后回复, -
- 0 篇回复
- 114 次查看
在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的生存时间,利用session_destroy()删除. …
KaiWn的最后回复, -
- 0 篇回复
- 134 次查看
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开关变量即可。…
KaiWn的最后回复, -
- 0 篇回复
- 135 次查看
关于.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就可以了,比如in…
KaiWn的最后回复, -
- 0 篇回复
- 156 次查看
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: 序列化后的字符串。 返回值 返…
KaiWn的最后回复, -
- 0 篇回复
- 135 次查看
一、LNMP架构的编译安装 1. 安装nginx服务 (1)关闭防火墙 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost ~]# setenforce 0 setenforce: SELinux is disabled (2)安装依赖包 [root@localhost ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make (3)创建运行用户 [root@localhost ~]# useradd -M -s /sbin/nologin nginx (4)编译安装 [root@localhost ~]# cd /opt [root@localhost opt]# tar zxvf nginx-1.15.9.tar.gz -C /opt [root@localhost opt]#…
KaiWn的最后回复, -
- 0 篇回复
- 127 次查看
前端代码进行防护,浏览器禁用js,或者使用burp修改文件后缀 二. 后端代码进行防护,使用burp修改文件content-type 三. 利用前提:需要apache的配置文件里面能够解析php5等后缀,然后直接上传.php5等后缀文件 # cd /opt/lampp/etc # vim httpd.conf Addtype application/x-httpd-php .php .phtml .php5 :wq # /opt/lampp/lampp restart 四. 1.后台代码没有第三关的重命名,后缀从后往前执行.bbb解析不了,执行.aaa,执行.php 直接上传shell.php.aaa.bbb文件 2.没有拒绝.htaccess后缀(利用前提条件:1.mod_rewrite模块开启。2.AllowOverride All) 先上传一个.htaccess文…
KaiWn的最后回复, -
- 0 篇回复
- 123 次查看
array_chunk()函数是PHP中的内置函数,用于根据传递给函数的参数将数组拆分为给定大小的部分或块。最后一个块可能包含的元素少于块的所需大小。 语法: array array_chunk($ array,$ size,$ preserve_keys) 参数:该函数接受三个参数,如上面的语法所示。参数说明如下: $array:此参数表示需要分成多个块的数组。 $size:此参数是整数,用于定义要创建的块的大小。 $preserve_keys:此参数为布尔值。当此参数设置为TRUE时,将保留键,否则将从0开始重新索引块。 返回值:该函数返回一个从0开始索引的多维数组。每个块包含$size个元素,最后一个块除外,后者可能包含较少数量的元素。 实例: Input : $input_array = array('a', 'b', 'c', 'd', 'e'); array_chunk($input_array, 2); Output : Array( [0] => Array ( [0] => a [1] => b ) [1] …
KaiWn的最后回复, -
- 0 篇回复
- 121 次查看
对于php,有很多种多进程的实现,这里就不说了,下面介绍一种多线程的方式。 php真正的多线程实现方式,通过安装php的扩展:pthread 扩展 原文链接:php 真正的多线程 pthread 安装步骤如下: 1.下载地址是这个: https://github.com/krakjoe/pthreads 但是这个下载的是 版本3 也就是php 7 才能用的 我们需要使用2版本 然后刷新的页面如下,拖到最底部: 在下一页找到版本2的 下载下来,这个v2 才是php5才可以使用的 下载下来,安装: 或者,您直接这样下载: ``` cd /tools wget https://github.com/krakjoe/pthreads/archive/v2.0.10.zip unzip v2.0.10.zip cd pthreads-2.0.10 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make make install ``` …
KaiWn的最后回复, -
- 0 篇回复
- 129 次查看
php虚拟机 <深入理解PHP内核> 这书当年就没咋看懂。。。 https://www.shouce.ren/api/view/a/14924 print语句 创建一条zend_op,将返回值的类型设置为临时变量(IS_TMP_VAR),并为临时变量申请空间,随后指定opcode为ZEND_PRINT,并将传递进来的参数赋值给这条opcode的第一个操作数。这样在最终执行这条opcode的时候,Zend引擎能获取到足够的信息以便输出内容。 echo处理除了指定opcode以外,还将echo的参数传递给op1,这里并没有设置opcode的result结果字段。从这里我们也能看出print和echo的区别来,print有返回值,而echo没有,这里的没有和返回null是不同的,如果尝试将echo的值赋值给某个变量或者传递给函数都会出现语法错误。 PHP脚本编译为opcode保存在op_array中 op_array 的作用域是啥????? execute函数执行: ZEND_API void execute(zend_op_array *op_array TSRMLS_DC) PHP开始执行以后会经过两个主要的阶段:处理请求之前的开始阶段和请求之后的结束阶段。开 …
KaiWn的最后回复, -
- 0 篇回复
- 130 次查看
php优化 - 防止跨域攻击 解决方案: 验证 HTTP Referer 字段 服务端生成token,下发到客户端,客户端提交后并进行验证 http的header头自定义属性,每次验证header头中的自定义的属性值
KaiWn的最后回复, -
- 0 篇回复
- 125 次查看
SimpleXML扩展在解析和操作XML文档时非常实用,本文将讨论如何使用php SimpleXML解析xml文件。 首先,让我们看一下使用SimpleXML扩展将XML内容转换为数组所需遵循的步骤。 将xml文件转换为字符串: 使用php file_get_contents()函数将整个xml文件作为字符串读取并存储到变量中。 将字符串转换为对象: 将字符串转换为对象,可以通过PHP的一些内置函数simplexml_load_string()轻松完成。 将对象转换为JSON: json_encode()函数将对象,数组的数据格式转换为json格式的数据 解码JSON对象: json_decode()函数解码JSON字符串。它将JSON编码的字符串转换为PHP变量。 php解析xml文件需要使用到的函数 file_get_contents(): file_get_contents() 函数把整个xml文件读入一个字符串中 simplexml_load_string(): simplexml_load_string() 函数转换形式良好的 XML 字符串为 SimpleXMLElement 对象。 simplexml_load_file(): s…
KaiWn的最后回复, -
在php网站开发中,发送电子邮件是一个非常普片的需求。比如网站注册功能,当用户注册完成后需要发送电子邮件给用户,提示用户注册成功或者发送验证链接,另外,用户修改账号密码也需要发送电子邮件。 本文章向大家介绍php发送邮件的两种方法: 使用php mail()发送邮件 使用第三方类库PHPMailer发送邮件 使用php mail()发送邮件 mail()是php的内置函数,它允许使用本地sendmail 程序发送电子邮件。无论何时调用mail()函数,它都会调用本地sendmail程序,该程序通常由系统管理员配置。如果你的虚拟主机位于Hostinger,你可以在电子邮件 - >邮件服务控制 部分启用/禁用此功能 。 默认情况下sendmail服务是自启(自行启动)。 语法: mail(to,subject,message,headers,parameters) 参数: 参数名 描述 to 必需。规定 email 接收者。 subject 必需。规定 email 的主题。注释:该参数不能包含任何新行字符。 …
KaiWn的最后回复,