ios /安卓开发
软件开发工具包/Android原生开发工具包相关文档和高级学习教学。
1,468个主题在此版面
-
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]# .…
-
- 0 篇回复
- 125 次查看
-
-
<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //连接Redis $redis->auth('mypasswords123sdfeak'); //密码验证 $redis->select(2);//选择数据库2 $redis->set( "testKey" , "Hello Redis"); //设置测试key echo $redis->get("testKey");//输出value ?> ———————————————— 版权声明:本文为CSDN博主「justbear」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/justbear/article/details/73001852
-
- 0 篇回复
- 117 次查看
-
-
一. 前端代码进行防护,浏览器禁用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文件,内容如下: SetHandler application/x-httpd-php 这样所有文件都会当成php来解析 五. 后台代码去掉文件末尾的点 使用burp修改文件后缀为. .绕过,访问时使用.php.(空格)
-
- 0 篇回复
- 135 次查看
-
-
如何严格设置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 篇回复
- 143 次查看
-
-
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是否有值有…
-
- 0 篇回复
- 132 次查看
-
-
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…
-
- 0 篇回复
- 139 次查看
-
-
关于.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 篇回复
- 146 次查看
-
-
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 篇回复
- 134 次查看
-
-
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 篇回复
- 131 次查看
-
-
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 篇回复
- 126 次查看
-
-
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 篇回复
- 123 次查看
-
-
手机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 篇回复
- 141 次查看
-
-
文件上传 文件上传漏洞是指文件上传功能没有对上传的文件做合理严谨的过滤,导致用户可以利用此功能,上传能被服务端解析执行的文件,并通过此文件获得执行服务端命令的能力。 上传绕过 类型判断 常规上传 前端绕过 使用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 篇回复
- 137 次查看
-
-
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 篇回复
- 129 次查看
-
-
需求:在一张背景图上添加二维码(带不同),并且个人名字,联系方式和个人头像。 思路:二维码和头像相当于往图片上添加图片,个人姓名和联系方式相当于玩图片上添加文字,这就是文字/图案水印了。思路就是上网百度!! 历经辛苦,找到一篇看起来可能会明白,简洁,简短的文章:(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 篇回复
- 134 次查看
-
-
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里的值会变成键名,因为值是有重…
-
- 0 篇回复
- 125 次查看
-
-
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 篇回复
- 141 次查看
-
-
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 篇回复
- 113 次查看
-
-
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 篇回复
- 117 次查看
-
-
本文演示使用 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 篇回复
- 127 次查看
-