ios /安卓开发
软件开发工具包/Android原生开发工具包相关文档和高级学习教学。
1,467个主题在此版块
-
- 0 篇回复
- 87 次查看
LNMP架构的源码编译 一、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]# cd nginx-1.15.9/ [root@localhost nginx-1.15.9]# .…
HACK1949的最后回复, -
- 0 篇回复
- 76 次查看
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()注意事项 当数组值包含如双引号、单引号或冒号等字符时,它们被反序列化后,可能…
HACK1949的最后回复, -
- 0 篇回复
- 91 次查看
PHP static静态局部变量和静态全局变量总结_胡德咏的博客-CSDN博客 https://blog.csdn.net/u010620626/article/details/43965879 使用静态局部变量的原因是它不能被外部使用,但是它的值依然在每次使用后保留。虽然使用全局变量可以实现相同的功能,但是它经常会造成意外。 静态局部变量的特点: 1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在,但不能使用它。倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值 2.静态局部变量只会初始化一次 3.静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量);静态变量的初始值为0。 4.当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。 //@link http://www.phpddt.com function test() { static $var = 5; //static $var = 1+1;就会报错 $var++; echo $var . ' '; } test(); //2 test(); //3 test(); //4 echo $var; //报错:Notice: Undefine…
HACK1949的最后回复, -
- 0 篇回复
- 80 次查看
PHP的session文件包含与竞争 [email protected] lamaper - 博客园 (cnblogs.com) 一、什么是Session Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。 由于html的特性,多个请求之间无关联,如果在/xxx.html中为登录状态,那么跳转到/yyy.html就会变成默认的未登录状态,seesion的出现是为了弥补这一缺陷,让每一个用户在多个请求中状态一致。 session是保存在服务端的,与之相对的是cookie,cookie是保存在客户端的。每当用户使用一浏览器开始对服务器发出请求,一个session就会被创建,当用户关闭浏览器结束访问,session会被删除。所以用同一个ip访问同一个网站,如果浏览器不同,用户状态也是不同的,所以session创建的标准是浏览器而不是ip。session不随刷新页面而消失。 以下内容以php举例 每次我们访问一个页面,如果有开启session,也就是有session_start() 时,就会自动生成一个session_id 来标注是这次会话的唯一ID,同时也会自动往cookie里写入一个名字为PHPSESSID的变量,它的值正是session_id,当这次会话没结束,再次访问的时候,服务器会去读取这个PHPSESSID的cookie是否有值有…
HACK1949的最后回复, -
- 0 篇回复
- 91 次查看
如何严格设置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储存的…
HACK1949的最后回复, -
- 0 篇回复
- 86 次查看
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.
HACK1949的最后回复, -
- 0 篇回复
- 77 次查看
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…
HACK1949的最后回复, -
- 0 篇回复
- 87 次查看
关于.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
HACK1949的最后回复, -
- 0 篇回复
- 80 次查看
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退出执行脚本 ?> 改良脚本如下…
HACK1949的最后回复, -
- 0 篇回复
- 85 次查看
需求:在一张背景图上添加二维码(带不同),并且个人名字,联系方式和个人头像。 思路:二维码和头像相当于往图片上添加图片,个人姓名和联系方式相当于玩图片上添加文字,这就是文字/图案水印了。思路就是上网百度!! 历经辛苦,找到一篇看起来可能会明白,简洁,简短的文章:(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…
HACK1949的最后回复, -
- 0 篇回复
- 80 次查看
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上,用于结束函数的执行。 例子就不提供了吧,很简单的。
HACK1949的最后回复, -
文件上传 文件上传漏洞是指文件上传功能没有对上传的文件做合理严谨的过滤,导致用户可以利用此功能,上传能被服务端解析执行的文件,并通过此文件获得执行服务端命令的能力。 上传绕过 类型判断 常规上传 前端绕过 使用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下 …
HACK1949的最后回复, -
- 0 篇回复
- 84 次查看
手机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两个操作系统的判断,其他操作系统原理一样 …
HACK1949的最后回复, -
- 0 篇回复
- 80 次查看
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…
HACK1949的最后回复, -
- 0 篇回复
- 75 次查看
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()的返回值=!(…
HACK1949的最后回复, -
- 0 篇回复
- 88 次查看
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…
HACK1949的最后回复, -
- 0 篇回复
- 78 次查看
php array_flip() 删除数组重复元素_php技巧_脚本之家 https://www.jb51.net/article/17104.htm 方法如下: $arr = array(…………) ;//假设有一万个元素的数组,里面有重复的元素。 $arr = array_flip(array_flip($arr)); //这样便可以删除重复元素。 究竟是怎么回事呢?来看下array_flip()的作用:array_flip()用于将一个数组的每个元素的键和值交换,如: $arr1 = array (”age” => 30, “name” => “快乐园”); $arr2 = array_flip($arr1); //$arr2 就是 array(30 => “age”, “快乐园” => “name”); 在PHP的数组中,允许不同的元素可以取同一个值,但不允许同一个键名被不同的元素使用,如: $arr1 = array (”age” => 30, “name” => “快乐园”, “age” => 20); “age” => 20将会取代”age” => 30 $arr1 = array (”name” => “快乐园”, “age” => 45); 这里 $arr1与$arr2 是相等的。 于是,我们便可以知道,为什么 array_flip(array_flip($arr)) 可以删除数组中重复的元素了。首先,$arr里的值会变成键名,因为值是有重…
HACK1949的最后回复, -
- 0 篇回复
- 76 次查看
本文演示使用 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 …
HACK1949的最后回复, -
- 0 篇回复
- 71 次查看
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…
HACK1949的最后回复, -
- 0 篇回复
- 86 次查看
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(…
HACK1949的最后回复,