1.php curl 代ç
2.PHP缓存技术有那些 静太化设计是源码不是指re
3.Vue2源码学习笔记 - 7.响应式原理一基础
4.php如何安装?
5.微信OAuth2.0授权回调页面域名设置问题
6.yxcms登入后台
php curl 代ç
curl_exec($ch);
====>
if(curl_exec($ch) === false)
{
echo 'Curl error: ' . curl_error($ch);
}
else
{
echo 'Operation completed without any errors';
}
PHP缓存技术有那些 静太化设计是不是指re
PHP缓存与静态化知识:
缓存原理:缓存工作时程序查询数据时候,会把相应的源码结果序列化后保存到文件中,以后同样查询语句就可以不用直接查询数据库而是源码从缓存文件中获得。使得程序运行速度得以大幅度提升。源码
按缓存模式分有:页面缓存、源码数据缓存。源码发卡源码有哪些ADODB缓存是源码数据缓存、smarty是源码页面缓存(Adodb+Smarty黄金搭档)。
按缓存技术分有:普遍缓存技术数据缓存、源码页面缓存、源码时间触发缓存、源码内容触发缓存(当插入数据或更新数据时,源码强制更新缓存)静态缓存、源码DNS轮询(BIND是源码一款开放源码的DNS服务器软件);
内存缓存(减少数据库负载,提升访问速度)、源码php的缓冲器、MYSQL缓存、基于反向代理的Web缓存(如Nginx,SQUID,mod_proxy(apache2以上又分为mod_proxy和mod_cache))。
按缓存类型分有:缓存模块(Zend Cache、APC等)、HTML方式(CMS)、生成Cache文件、php内置缓存机制(Discuz)、缓存IE下载的文件
判断缓存是否改变:缓存文件时间超过了就会自动读取新的,不然就读取缓存文件。也可以在更新数据的同时用clear_cache函数清除你原来的缓存。
伪静态就是mod_rewrite,还有pathinfo方式、真静态就是windows密码获取源码利用缓冲机制,生成文件。
数据缓存,基本是memcache、代码缓存,基本是apc。
缓存模块实例:
APC:
全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”,但我个人觉得应该叫”另一个PHP缓存”。因为这个东西如果叫”可选PHP缓存”,容易给人一种可要可不要的,不怎么有用的错觉。
PHP APC的安装: 一般是下载源代码然后phpize来编译安装,安装完以后在加上php.ini里加上 extension=apc.so 这么一行就行了。
PHP APC的使用: APC的使用其实倒说不上.APC是个优化器,自安装之日起,就默默地在后台为您的PHP应用服务了.您的所有PHP代码会被缓存起来. 另外,APC可提供一定的内存缓存功能.但是这个功能并不是十分完美,有报告说如果频繁使用APC缓存的写入功能,会导致不可预料的错误.如果想使用这个 功能,可以看看apc_fetch,apc_store等几个与apc缓存相关的函数. 从PHP5.2开始,APC引入了一个小甜饼,解决了困扰大家已久的大文件上传的进度条问题。
PHP APC的高级使用,缓存期限: APC的缓存分两部分:系统缓存和用户数据缓存。
Vue2源码学习笔记 - 7.响应式原理一基础
深入研究 Vue 的响应式核心,了解响应式机制在 Vue 中的核心地位。Vue 的响应式原理,让数据模型简单直接地管理状态,无需侵入性操作。
当你将普通 JavaScript 对象作为 Vue 实例的 data 选项时,Vue 会遍历对象属性并使用 Object.defineProperty 转换为 getter 和 setter。此特性仅在 ES5 中可用,不支持 IE8 及以下浏览器。
这些 getter 和 setter 在内部追踪依赖,当属性被访问或修改时,会通知 Vue。类似于 PHP 的魔术方法或 Java 的 getXXX\setXXX,但实现上存在差异。Java 可能拥有更接近的实现,比如 CGLib。
每个 Vue 组件实例对应一个 watcher,记录接触过的文件签发系统源码数据属性为依赖。当依赖项的 setter 触发时,watcher 被通知,组件重新渲染。
简单 demo 通过 defineReactive 实现响应式设置,允许访问 data 中的属性,设值触发 setter,引用触发 getter。此方法依赖于 Object.defineProperty,是响应式原理的核心。
Proxy 是 ES 定义的类,用于创建对象代理,实现基本操作拦截和自定义。通过简单的 demo 可见,更新和引用数据时会调用 setter/getter 方法。Vue2 使用 Proxy,但用途不多。
总结,学习 Object.defineProperty 和 Proxy 实现响应式的底层方法。它们在数据更新和引用时触发特定方法,执行期望的操作实现响应式。下篇深入 Vue 响应式实现。
php如何安装?
怎么安装PHP环境?
LAMP/LNMP环境搭建
一.检查系统环境
1.确认centos版本
[root@localhost~]#cat/etc/redhat-release
2.检查是否安装过apache
rpm-qa|grepf
5.卸载Apache包
rpm-qa|grep(小皮)或者bt.cn(宝塔)安装面板
如果你的服务器是Linux,建议使用宝塔
打开终端,不同Linux系统的输入指令不同:
Centos安装脚本
终端输入:yuminstall-ywgetwget-Oinstall.shshinstall.sh
Ubuntu/Deepin安装脚本
终端输入:wget-Oinstall.shsudobashinstall.sh
Debian安装脚本
终端输入:wget-Oinstall.shbashinstall.sh
Fedora安装脚本
终端输入wget-Oinstall.shbashinstall.sh
输入后进行安装就可以了
如何安装PHP模块php模块安装的方式
1、静态安装
将先将在安装php之前先将需要安装的程序装上,如ftp、mhash、mcrypt……安装完成后,解压php安装包,js源码动态加载执行./configure
--with-ftp
--with-mhash
--wth-mcrypt等等。后面具体跟的参数可以参看./configure
--help查看。编译好后,执行make
make
install
就行了。
2、动态安装
而在往往我们进行编译php时经常会忘记添加某扩展,后来想添加扩展,但是因为安装php后又装了一些东西如PEAR等,不想再重新装php,于是可以采用phpize来动态加载需要安装的模块。
具体实现方法如下(这里以忘记安装pdo_mysql模块为例):
cd
/root/source/php-5.3./ext/pdo_mysql
/usr/local/php/bin/phpize
在安装完mysql后,并不是进入/root/source/mysql-5.5.目录运行phpize,而是进入php的源文件中要增加的扩展模块的文件目录---也就是/root/source/php-5.3./ext/pdo_mysql目录执行phpize。如果不是这样操作的话就会提示下面的错误:
Cannot
find
config.m4.
Make
sure
that
you
run
'/usr/local/php/bin/phpize'
in
the
top
level
source
directory
of
the
module
关于上面的这个错误,我不得不鄙视下网上有些自以为是的家伙,自认为对所有的安装操作很懂,报上面的错误的时候,去修改源代码,搞的乱七八糟,误人子弟。根本不按php官方的文档操作。
目录/root/source/php-5.3./ext/pdo_mysql
,在运行phpize命令前并没有configure文件,只有config.m4文件。运行phpize就生成了一个可执行的configure文件。此时就可以按照下的方法编译了:
./configure
--with-php-config=/usr/bin/php-config
(还可以加一些其他的参数,可通过./configure
--help查看)
make
make
install
编译完成后会提示扩展模块生成在/usr/local/php/lib/php/extensions/no-debug-non-zts-目录。
修改php.ini文件
vi
/usr/local/php/etc/php.ini
在其文件结尾加入下面的内容:
extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-"
extension=pdo_mysql.so
安装完成后,重启php-fpm和web服务器。(因为我用的机器视觉框架源码是php-fpm和tengine,如果用的是apache则也重启相应的程序,重新加载就行了)
微信OAuth2.0授权回调页面域名设置问题
当下的解决方案是引入一个新的非常简单的应用来作为微信授权的代理服务,可以这么做:1. 把公众号的网页授权接口域名设置成另外一个子域名,如proxy.your.com;
2. 然后把php_weixin_proxy里面的index.php部署到proxy.your.com
php_weixin_proxy下的index.php是一个很简单的php文件,你可以直接查看源码了解它的实现方式。因为当前项目的环境,我采用php来完成这个代理服务实现,实际上,你完全可以用任意平台语言来完成类似的功能。
当其它业务需要发起微信授权时,将授权请求先发到proxy.your.com,然后proxy.your.com会把这个请求转发到微信;
当用户同意授权后,proxy.your.com会收到微信的授权回调,并把回调结果(code、state参数)原封不动地再返回给最开始发起授权的业务。
唯一的区别在于,在不使用proxy.your.com的时候,你从应用发起微信授权的链接应该是这样的:
/connect/qrconnect?appid=xxxxx&redirect_uri=%2F&response_type=code&scope=snsapi_login&state=bceff#wechat_redirect
用了proxy.your.com之后,这个授权链接就应该是这样的:
/?appid=xxxxx&redirect_uri=%2Flogin%2Fnotify&response_type=code&scope=snsapi_base&state=bceff&device=pc
后面这个链接跟上面的比:
1. 后面的链接中的host变成了proxy.your.com,也就是代理的授权回调域名;
2. 后面的多了一个device参数,这个是必要的。因为微信pc端跟移动端的授权地址是不一样的,而后面的链接是发送个proxy.your.com的,所以需要多加个参数告诉它在转发给授权申请给微信的时候,是用PC端还是移动端的授权地址。
1. 用户从我们的应用触发需要授权的操作,比如点击微信登录;
2. 应用收到这种用户请求后,将用户重定向到微信提供的一个授权页面:
或
3. 用户通过微信扫码(PC端授权,上边左图)或者点击确认按钮(移动端授权,上边右图)告知微信,授权应用访问自己的微信账号信息;
4. 微信收到用户的授权许可后,生成授权码,并把它作为参数回调至应用的某个页面;
5. 应用的回调页面在接收到微信的回调请求后,拿到其中的授权码,并通过微信官方提供的access token api接口获取access token;
6. 最后通过access token以及微信官方提供的另一个userinfo api接口就能获取到用户的微信账号信息。
为了实现这个过程,首先要为应用申请一个微信公众号,并将应用最终部署的域名设置到微信公众号设置里面的授权回调页面域名这个选项里面。微信官方对这个选项的说明如下:
关于网页授权回调域名的说明
1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 ,配置以后此域名下面的页面/music.html 、 /login.html 都可以进行OAuth2.0鉴权。但 、 、 无法进行OAuth2.0鉴权
3、如果公众号登录授权给了第三方开发者来进行管理,则不必做任何设置,由第三方代替公众号实现网页授权即可
由此可见,这个规则极其严格。如果说我们的应用最终部署的时候只有一个域名,那么这种规则不会有什么问题;但是考虑到将来应用的复杂性,我们可能在应用设计之初就会对应用做拆分,然后不同的业务采用不同的二级域名来部署。比如一个带有交易的应用,你可能会把登录注册,交易管理和常规业务都独立出来,然后采用以下的方式来部署它们:
www.your.com 部署常规业务;
trade.your.com 部署交易管理的业务;
passport.your.com 部署登录注册的业务;
在这种模式下,如果集成微信登录和微信支付,前面说的授权回调页面域名的规则就会给应用带来问题。在这里:至少可以确认trade.your.com和passport.your.com都需要前面的介绍的用户微信授权,但是它们是两个不同的子域名,而且我们只有一个公众号;根据授权回调页面域名的原则,它只能用一个域名,并且只有回调地址的域名与该设置完全相同,才能成功发起微信授权,否则就会提示rediret_uri参数错误或者引发无法回调的问题。
那么这种情况该如何处理?
当下的解决方案是引入一个新的非常简单的应用来作为微信授权的代理服务,可以这么做:
1. 把公众号的网页授权接口域名设置成另外一个子域名,如proxy.your.com;
2. 然后把php_weixin_proxy里面的index.php部署到proxy.your.com
php_weixin_proxy下的index.php是一个很简单的php文件,你可以直接查看源码了解它的实现方式。因为当前项目的环境,我采用php来完成这个代理服务实现,实际上,你完全可以用任意平台语言来完成类似的功能。
当其它业务需要发起微信授权时,将授权请求先发到proxy.your.com,然后proxy.your.com会把这个请求转发到微信;
当用户同意授权后,proxy.your.com会收到微信的授权回调,并把回调结果(code、state参数)原封不动地再返回给最开始发起授权的业务。
唯一的区别在于,在不使用proxy.your.com的时候,你从应用发起微信授权的链接应该是这样的:
/connect/qrconnect?appid=xxxxx&redirect_uri=%2F&response_type=code&scope=snsapi_login&state=bceff#wechat_redirect
用了proxy.your.com之后,这个授权链接就应该是这样的:
/?appid=xxxxx&redirect_uri=%2Flogin%2Fnotify&response_type=code&scope=snsapi_base&state=bceff&device=pc
后面这个链接跟上面的比:
1. 后面的链接中的host变成了proxy.your.com,也就是代理的授权回调域名;
2. 后面的多了一个device参数,这个是必要的。因为微信pc端跟移动端的授权地址是不一样的,而后面的链接是发送个proxy.your.com的,所以需要多加个参数告诉它在转发给授权申请给微信的时候,是用PC端还是移动端的授权地址。
整体方案思路:
小结:
这个方案我测试过,是行的通的。虽然说引入了代理服务,增加了一次重定向操作,不过由于这个授权请求并不是所有请求都需要,所以实际上也不会对用户体验产生多大的影响,但是从架构上来说,它的好处很明显,能够配合着应用的拆分逻辑,集成同一个公众号的登录及支付功能,不必为每个子应用都单独申请一个公众号来开发了(这种方式从业务上来说也不合理,一个公司哪需要运营那么多公众号)。
yxcms登入后台
搭建yxcms网站
首先,下载yxcms源代码,链接:pan.baidu.com/s/1s3xM-6...提取码:。将yxcms文件夹放置于phpstudy的WWW目录下。接着,启动phpstudy,创建网站,使用域名yxcms便于记忆,端口选择或其他,根目录指向浏览,选择yxcms文件夹,选择PHP版本为5,点击确认。
若需了解搭建phpstudy的详细教程,可参考:blog.csdn.net/m0_...。
利用burp登入后台
完成网站创建后,访问yxcms.com,安装yxcms并注意数据库用户名和密码,通常为root。安装后访问前台或后台。前台页面如下,后台页面如图。访问后台地址为index.php?r=admin/index/login。
启动burp,确保浏览器代理已开启,使用burp抓包。若无代理,可使用burp内置浏览器。打开Intercept并开启,选择Proxy下的第三个选项,点击Intercept is on。在内置浏览器访问网站,输入用户、密码和验证码,抓取数据包,右键选择Send to Intruder。
使用爆破攻击,清除数据,添加用户、密码部分至Intruder,设置Attack type为Cluster bomb。加载爆破字典,启动攻击。结果显示,Length不同的即是正确的用户和密码。成功爆破后,关闭bp拦截,使用正确用户和密码登录后台。
上传木马与远程控制
选择管理模板文件,新建模板。文件命名随意,内容上传木马,使其可直接控制后台。木马路径为yxcms.com\protected/apps/default/view/default/1.php,可直接访问。
至此,yxcms网站搭建完成,可进行MySQL执行、ServU提权、反弹连接、远程下载等操作。此步骤适用于学习,实践时需注意安全。