ios /安卓开发
软件开发工具包/Android原生开发工具包相关文档和高级学习教学。
1,467个主题在此版块
-
- 0 篇回复
- 89 次查看
PHP文件上传功能是非常普片的需求,而在网站开发过程中,我们可以需要同时上传多个文件,这个时候就需要开发出php多文件上传的功能。在本教程中,我将向您展示如何使用PHP实现多个文件上传。 HTML代码 首先, 您需要创建一个属性为 enctype ='multiple / form-data'的HTML表单。实际上, enctype属性指定将表单数据提交到服务器时应如何编码。使用具有文件上载控件的表单时,需要将enctype指定为multiple / form-data。 如果使用单个input file文本控件,则需要将input file设置为可以选择多个文件。因此,需要将input file命名为数组,例如: name="upload[]" 。 <form method='post' action='' enctype='multipart/form-data'> <input type="file" name="upload[]" id="upload" multiple> <input type='submit' name='submit' value='Upload'> </form> PHP代码 在处理表单之前,请先检查表单是否已提交。 if(isset($_POST['submit'])) 下一步检查上传文件的个数,上传个数必须大于或等于1个,否则不作任何处理。 if(count($_FILES['upload']['name']) > …
HACK1949的最后回复, -
- 0 篇回复
- 102 次查看
这篇文章我们将讨论如何使用php对xml进行CRUD(创建、读取、更新、删除)操作,CRUD操作通常是数据库的基本数据操作。这里,我们将创建一个简单的PHP应用程序,在XML而不是数据库上执行所有这些操作。 PHP创建XML文件 php创建xml文件最常用的两种方法是使用SimpleXML和DomDocument。这里我们使用DomDocument来创建XML文件。 使用DomDocument生成xml文件,需要用到以下几个方法 1、创建节点:createElement 2、创建节点文本:createTextNode 3、创建节点属性:createAttribute 4、添加节点、或节点文本、节点属性:appendChild 代码示例: <?php $xmlpatch = 'index.xml'; $_id = '1'; $_title = 'title1'; $_content = 'content1'; $_author = 'author1'; $_sendtime = 'time1'; $_htmlpatch = '1.html'; $doc = new DOMDocument('1.0', 'utf-8'); $doc -> formatOutput = true; $root = $doc -> createElement('root'); $index = $doc -> createElement('index'); $url = $doc -&…
HACK1949的最后回复, -
在php网站开发中,发送电子邮件是一个非常普片的需求。比如网站注册功能,当用户注册完成后需要发送电子邮件给用户,提示用户注册成功或者发送验证链接,另外,用户修改账号密码也需要发送电子邮件。 本文章向大家介绍php发送邮件的两种方法: 使用php mail()发送邮件 使用第三方类库PHPMailer发送邮件 使用php mail()发送邮件 mail()是php的内置函数,它允许使用本地sendmail 程序发送电子邮件。无论何时调用mail()函数,它都会调用本地sendmail程序,该程序通常由系统管理员配置。如果你的虚拟主机位于Hostinger,你可以在电子邮件 - >邮件服务控制 部分启用/禁用此功能 。 默认情况下sendmail服务是自启(自行启动)。 语法: mail(to,subject,message,headers,parameters) 参数: 参数名描述to 必需。规定 email 接收者。 subject 必需。规定 email 的主题。注释:该参数不能包含任何新行字符。 message 必需。定义要发送的消息。应使用 LF (\n) 来分隔各行。 headers 可选。规定附加的标题,比如 From、Cc 以及 Bcc。 应当使用 CRLF (\r\n) 分隔附加的标题。 parameters 可选。对邮件发送程序规定额外的参数。 使用php mail()发送html邮件 <?php $to = "[email protected], somebodyelse@…
HACK1949的最后回复, -
- 0 篇回复
- 91 次查看
大多数时候,PHP开发人员需要在文件或数据库中存储一个复杂的数组。复杂的数组是那些具有多个单一数据类型或数组元素的数组。 在本教程中,我们将向您展示如何使用 serialize() 和 unserialize() 函数来实现存储和读取复杂数据。 PHP serialize()函数 serialize()是PHP内置函数,用于序列化指定定数组。serialize()函数接受一个参数,该参数是我们要序列化的数据,并返回一个序列化的字符串. 语法 serialize(value) 其中 $value 就是要序列化的变量。 serialize() 函数可以处理除了 resource(资源)之外的任何类型。当序列化对象时,PHP 会在序列动作之前调用该对象的 __sleep() 成员函数。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 反序列化对象时,将调用 __wakeup() 成员函数。 例子: <?php // say you have an array something like this $multidimentional_array= array( array( array("rose", 1.25, 15), array("daisy", 0.75, 25), array("orchid", 4, 7) ), array( array("rose", 1.25, 15),…
HACK1949的最后回复, -
- 0 篇回复
- 99 次查看
php优化 - 防止跨域攻击 解决方案: 验证 HTTP Referer 字段 服务端生成token,下发到客户端,客户端提交后并进行验证 http的header头自定义属性,每次验证header头中的自定义的属性值
HACK1949的最后回复, -
- 0 篇回复
- 104 次查看
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(): simplexml_load_file() 函数把 XML 文档载入对象中。如果失败,则返回 false。 json_encode(): json_encode函数主要用来将数组和对象,转换为json格式。 json_decode(): json_decode函数用于…
HACK1949的最后回复, -
- 0 篇回复
- 97 次查看
忘了哪本书里说,研究信息系统的安全问题,要对系统获得比开发人员更深的理解,深以为然 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开始执行以后会经过两个主要的阶段:处理请求之前的开始阶段和请求之后的结束阶段。开 PHP内核中的哈希表是十分重要的数据结构,PHP的大部分的语言特性都是基于哈希表实现的,例如:变量的作用域、函数表、类…
HACK1949的最后回复, -
1.什么是SQL注入、特征是什么、有哪些类型 (bypass waf Tips ?) 什么是SQL注入: 简单来说就是通过给web程序中定义好的sql语句进行添加额外的sql语句,来实现一种骗取数据库来进行查询操作,从而得到数据据信息。 特征: 1、广泛性:任何一个基于SQL语言的数据库都可能被攻击,很多开发人员在编写Web应用程序时未对从输入参数、Web表单、Cookie等接受到的值进行规范性验证和检测,通常会出现SQL注入漏洞。 2、隐蔽性:SQL注入语句一般都嵌入在普通的HTPP请求中,很难与正常语句区分开,所以当前许多防火墙都无法识别予以警告,而且SQL注入变种极多,攻击者可以调整攻击的参数,所以使用传统的方法防御SQL注入效果非常不理想。 3、危害大:攻击者可以通过SQL注入获取到服务器的库名、表名、字段名,从而获取到整个服务器中的数据,对网站用户的数据安全有极大的威胁。攻击者也可以通过获取到的数据,得到后台管理员的密码,然后对网页页面进行恶意篡改。这样不仅对数据库信息安全造成严重威胁,对整个数据库系统安全也有很大的影响。 4、操作方便:互联网上有很多SQL注入工具,简单易学、攻击过程简单,不需要专业的知识也可以自如运用。 有哪些类型: 1.按照注入点类型来分类: (1)数字型注入点 许多网页链接有类似的结构 http://xxx.com/users.php?id=1 基于此种形式的注入,一般被叫做数字型注入点,缘由是其注入点 id 类型为数字,在大多数的网页中,诸如 查看用户个人信息,查看文章等,大都会使用这种…
HACK1949的最后回复, -
开始升级PHP 查看版本 修订记录 版本 是否发布 2020-09-23 v1.0 否 CentOS7下安装PHP默认是5.4的,但是有些框架要求PHP的版本得在5.4以上,现在的框架大多要求php7以上的,比如typo3.8.x,必须7.0+;typo3.9.x,必须php7.2+。这时候我们就需要把PHP升级一下了。 yum provides php image-20200820174933400 开始升级PHP rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm #更新源 rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm yum remove php-common -y #移除系统自带的php-common yum install -y php72w php72w-opcache php72w-xml php72w-mcrypt php72w-gd php72w-devel php72w-mysql php72w-intl php72w-mbstring #安装依赖包 查看版本 php -v image-20200820175836331
HACK1949的最后回复, -
- 0 篇回复
- 101 次查看
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] => Array ( [0] => c [1…
HACK1949的最后回复, -
- 0 篇回复
- 90 次查看
对于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 ``` 注意:您的php 在编译的时候需要开启 --enable-maintainer-zts, ``` ./configure --prefix=/usr/local/php --disable-fileinfo --enable-fpm --with-c…
HACK1949的最后回复, -
漏洞简介 在一些系统的业务需求中,网站往往需要提供文件查看或者下载的功能。如果对用户查看或者下载的文件不做限制,那么恶意用户就能够随意查看或者下载任意的文件,包括源文件以及敏感文件等等。 网站代码本身存在读取文件的函数调用,且输出的文件内容是任意的文件的时候,如果用户下载时读取文件的路径是可控的,并且传递的文件路径参数未校验或者是校验不严格时,就可能文件下载漏洞。 在渗透测试的实战中,如果存在该漏洞时可以下载服务器上的敏感文件,比如脚本代码、服务以及系统配置文件等等,这样就可以利用这些信息来进一步的发现其他可以利用的漏洞。 漏洞的利用 漏洞的发现 在实际的渗透测试中,我们需要去观察URL的参数。如果URL当中存在一些诸如 file、path 等参数的时候,并且是可控的,就可以尝试一下利用这些参数来下载服务器上可以下载的文件以外的其他文件,比如 /etc/hosts、/etc/passwd 等等,如果成功下载到其他文件就表示该漏洞的存在。 特征参数: file、path、data、filepath、readfile、data、url、realpath...... 特征链接: download.php?path= download.php?file= down.php?file= data.php?file= readfile.php?file= read.php?filename= ....... Google Hacking: inurl:"readfile.php?file=" ....... …
HACK1949的最后回复, -
- 0 篇回复
- 93 次查看
编写程序的时候,经常要处理字符串,最基本就是字符串的查找,您可能需要检查字符串是否包含特定的字符或子字符串,因为您可能必须对该子字符串或字符执行某些操作。我们将使用下面的3个php内置函数来检查一个字符串是否包含特定字符。 PHP strrpos()函数 PHP strstr()函数 PHP preg_match()函数 PHP strrpos()函数 strrpos() 函数查找字符串在另一字符串中最后一次出现的位置。根据strrpos() 函数的特征,我们可以使用它来判断一个字符串中是否包含指定字符串。 首先来看一下strrpos()函数的语法和参数。 语法: strrpos(string,find,start) 参数详细描述: 参数描述string 必需。规定被搜索的字符串。 find 必需。规定要查找的字符。 start 可选。规定在何处开始搜索。 注意:字符串位置从 0 开始,不是从 1 开始。 例子: <?php //从提交的表单中获取邮件信息并保存到变量$email中 $email = $_POST['email']; //Inside if, we check using strpos function if (strpos($email, '@') !== false) { print 'There was @ in the e-mail address!'; } else { print 'There was NO @ in the e-mail address!'; }…
HACK1949的最后回复, -
- 0 篇回复
- 95 次查看
在PHP网络编程中,你可能需要删除数组中的一些元素,在本文章中,我们将演示并描述php如何删除数组元素。 文章一共列举了三种方法来实现这一功能: php unset()函数 php array_splice()函数 php array_diff()函数 PHP unset()函数删除数组元素 如果要从数组中删除元素,则可以简单地使用该php unset() 函数. 以下示例显示如何从关联数组和数字数组中删除元素。 $num_array = ["Amanda", "John", "Kelly", "Megan", "Henry"]; $asc_array = ["first" => "Amanda", "second" => "John", "third" => "Kelly", "fourth" => "Megan", "fifth" => "Henry"]; $key = array_search("John", $num_array); unset($num_array[$key]); print_r($num_array); /* Output — Array ( [0] => Amanda [2] => Kelly [3] => Megan [4] => Henry ) */ $key = array_search("John", $asc_array); unset($a…
HACK1949的最后回复, -
- 0 篇回复
- 86 次查看
坐标系介绍 地球坐标 (WGS84) WGS-84:是国际标准,GPS坐标(Google Earth使用、或者GPS模块) 国际标准,从专业GPS 设备中取出的数据的坐标系 国际地图提供商使用的坐标系 火星坐标 (GCJ-02)也叫国测局坐标系 GCJ-02:中国坐标偏移标准,Google Map、高德、腾讯使用 中国标准,从国行移动设备中定位获取的坐标数据使用这个坐标系 国家规定: 国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。 腾讯地图用的也是GCJ02坐标 百度坐标 (BD-09) BD-09:百度坐标偏移标准,Baidu Map使用 百度标准,百度 SDK,百度地图,Geocoding 使用 PHP /** * 中国正常GCJ02坐标---->百度地图BD09坐标 * 腾讯地图用的也是GCJ02坐标 * @param double $lat 纬度 * @param double $lng 经度 */ function Convert_GCJ02_To_BD09($lat, $lng) { $x_pi = 3.14159265358979324 * 3000.0 / 180.0; $x = $lng; $y = $lat; $z = sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi); $theta = atan2($y, $x) + 0.000003 *…
HACK1949的最后回复, -
- 0 篇回复
- 83 次查看
文件上传功能是动态Web应用程序的常用功能。通常,php采用提交表单并刷新页面的方法上传文件。但是,如果您想提供更好的用户体验,则可以使用jQuery和Ajax来上传文件而无需刷新页面。 上传文件的最简单方法是使用FormData。它使用键/值对发送XMLHttpRequest请求。最初,FormData用于发送键/值对中的所有表单数据,但也可以用于发送键控数据。FormData发送的数据格式与表单的Submit()提交方法中使用的格式相同。如果我们在表单的编码中使用multipart/form-data,它也会发送上传数据。 本文中将向您展示如何使用FormData对象和PHP提交表单数据上传文件。 创建一个HTML表单 在你的网站根目录创建一个文件夹命名为AJAX-upload,然后在该文件夹中创建一个index.html页面。页面代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>AJAX fiel Uploading</title> </head> <body> <p>Image uploader</p> <input type="file" id="fileAjax" name="fileAjax" /><br /><br /> …
HACK1949的最后回复, -
- 0 篇回复
- 105 次查看
作为开发人员,您可能会遇到这种情况,即数据库中有一个按特定顺序获取的数据列表,但您希望在前端显示这些项目时安装期中某一个字段进行排序。 比如数组: $mylist = array( array('ID' => 1, 'title' => 'Boring Meeting', 'event_type' => 'meeting'), array('ID' => 2, 'title' => 'Find My Stapler', 'event_type' => 'meeting'), array('ID' => 3, 'title' => 'Mario Party', 'event_type' => 'party'), array('ID' => 4, 'title' => 'Duct Tape Party', 'event_type' => 'party') ); 你希望得到以下结果: $mylist = array( array('ID' => 4, 'title' => 'Duct Tape Party', 'event_type' => 'party'), array('ID' => 3, 'title' => 'Mario Party', 'event_type' => 'party'), array('ID' => 2, 'title' => 'Find My Stapler', 'event_type' =&g…
HACK1949的最后回复, -
- 0 篇回复
- 84 次查看
下载扩展: Microsoft Drivers for PHP for SQL Server https://www.microsoft.com/en-us/download/details.aspx?id=20098 ODBC Driver: Microsoft® ODBC Driver 11 for SQL Server® - Windows (支持Sql Server® 2005) https://www.microsoft.com/zh-CN/download/details.aspx?id=36434 Microsoft® ODBC Driver 13 for SQL Server® - Windows + Linux (支持最新的SQL Server® 2016) https://www.microsoft.com/zh-CN/download/details.aspx?id=50420 安装配置: 下载SQL Server的PHP扩展(Microsoft Drivers for PHP for SQL Server),连接里有多个文件,只需要下载 SQLSRV40.EXE 即可。 解压后根据自己PHP的版本选择32位或64位的扩展,注意区分(Thread safe?)nts和ts。 复制扩展需要的文件到PHP扩展目录。(例如我这里使用的是:php_pdo_sqlsrv_7_ts_x64.dll 和 php_sqlsrv_7_ts_x64.dll) 修改php.ini添加以下两行来启用扩展: extension=php…
HACK1949的最后回复, -
- 0 篇回复
- 90 次查看
一. 前端代码进行防护,浏览器禁用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.(空格)
HACK1949的最后回复, -
- 0 篇回复
- 89 次查看
<?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
HACK1949的最后回复,