各种编程技术
子版块
-
72文章73主题
-
22文章23主题
-
16文章17主题
-
23文章26主题
- String常用方法
-
由
侠客756,
-
17文章19主题
-
13文章18主题
1,773个主题在此版块
-
- 0 篇回复
- 88 次查看
这篇文章我们将讨论如何使用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的最后回复, -
- 0 篇回复
- 80 次查看
忘了哪本书里说,研究信息系统的安全问题,要对系统获得比开发人员更深的理解,深以为然 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的最后回复, -
- 0 篇回复
- 91 次查看
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 篇回复
- 88 次查看
php优化 - 防止跨域攻击 解决方案: 验证 HTTP Referer 字段 服务端生成token,下发到客户端,客户端提交后并进行验证 http的header头自定义属性,每次验证header头中的自定义的属性值
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的最后回复, -
漏洞简介 在一些系统的业务需求中,网站往往需要提供文件查看或者下载的功能。如果对用户查看或者下载的文件不做限制,那么恶意用户就能够随意查看或者下载任意的文件,包括源文件以及敏感文件等等。 网站代码本身存在读取文件的函数调用,且输出的文件内容是任意的文件的时候,如果用户下载时读取文件的路径是可控的,并且传递的文件路径参数未校验或者是校验不严格时,就可能文件下载漏洞。 在渗透测试的实战中,如果存在该漏洞时可以下载服务器上的敏感文件,比如脚本代码、服务以及系统配置文件等等,这样就可以利用这些信息来进一步的发现其他可以利用的漏洞。 漏洞的利用 漏洞的发现 在实际的渗透测试中,我们需要去观察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 篇回复
- 74 次查看
对于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的最后回复, -
- 0 篇回复
- 85 次查看
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 篇回复
- 96 次查看
在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 篇回复
- 81 次查看
编写程序的时候,经常要处理字符串,最基本就是字符串的查找,您可能需要检查字符串是否包含特定的字符或子字符串,因为您可能必须对该子字符串或字符执行某些操作。我们将使用下面的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 篇回复
- 69 次查看
文件上传功能是动态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 篇回复
- 82 次查看
坐标系介绍 地球坐标 (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 篇回复
- 72 次查看
作为开发人员,您可能会遇到这种情况,即数据库中有一个按特定顺序获取的数据列表,但您希望在前端显示这些项目时安装期中某一个字段进行排序。 比如数组: $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 篇回复
- 64 次查看
下载扩展: 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 篇回复
- 72 次查看
一. 前端代码进行防护,浏览器禁用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 次查看
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 $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的最后回复, -
- 0 篇回复
- 83 次查看
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 篇回复
- 90 次查看
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的最后回复,