1.Yaf入门笔记
2.Web小白的笔记p笔CTF自学笔记(5)——PHP基础
3.Swoole学习笔记五:搭建WebSocket长连接 之 客户端实现心跳重连
4.ä»PHP å°Golang çç¬è®° ( 转 )
5.think-swoole使用笔记
6.求死亡笔记L的大图
Yaf入门笔记
本文档旨在补充官方文档,解决理解和操作中可能遇到的源码难题。一般情况下,记源/代表项目根目录,笔记p笔配置文件位于项目中的源码/conf/application.ini。安装
Windows安装时,记源实践中心源码首先检查PHP版本,笔记p笔通过命令行获取。源码 下载并安装合适的记源PECL库,推荐选择稳定版本,笔记p笔与PHP版本和系统位数匹配。源码 在Linux上,记源可以通过下载安装包进行安装,笔记p笔遵循官方文档步骤。源码如CentOS需在php.ini中添加,记源Ubuntu则在对应fpm和cli的ini文件中添加,并重启服务。创建项目
从GitHub下载Yaf项目到目标目录,执行创建项目所需的代码。配置服务器
主要参考官方文档进行服务器配置,但需自行调整以适应项目需求。模块、控制器与方法
Yaf默认模块是Index。添加新模块时,需在application/modules目录下创建,android背景虚化源码如User模块,包含对应的控制器、模型和视图文件。 默认访问Index控制器和Index方法。注意控制器类名需遵循驼峰命名规则,方法名以xxxAction结尾。路由
默认路由如localhost/yafStudy/index。自定义路由如Supervar和Map,允许替换默认标识符。Rewrite和Regex提供更灵活的路由匹配,大部分场景下默认路由能满足需求。修改路由
可通过配置文件或Bootstrap.php进行更改,具体步骤参照官方文档的路由配置。类库管理
Yaf支持全局和本地类库。推荐使用本地类库,便于项目部署时的管理。 配置本地类库应在配置文件中添加相关信息,并在需要时调用。Web小白的CTF自学笔记(5)——PHP基础
PHP Tutorial (w3schools.com)
在自学PHP基础的过程中,需要掌握大量漏洞函数。若不想记忆,可以参考我编写的插件来辅助学习。
@符号用于禁止错误输出的回显。
$符号是蓝牙控制 app 源码取址符,用于获取名为a的变量的值。
使用反引号`包裹的字符串会被当作系统命令执行,但无回显,需要通过echo来显示结果。
字符串有四种表示方法:单引号、双引号、花括号和以反引号开头。
变量名可以是$a、${ 'a'}或${ a}(带警告)。
函数名可以是字符串变量或字符串(带"或')。
在PHP 7和8中,函数名可以用不带'、不带"的字符串通过()表示。
在PHP 5和7中,索引字符串可不带'或"。
在PHP 5和PHP 7中,{ }可替代[]作为索引符。
关于弱比较漏洞函数intval,它将字符串解析为整型,将小数去尾,但传入非空数组返回1,空数组返回0。
PHP通常使用IEEE 双精度格式,当小数小于^-后,java set源码解析PHP对于小数就大小不分了。
preg_match函数用于正则匹配字符串,传入数组返回false。
PHP为了防止正则表达式的拒绝服务攻击(reDOS),给pcre设定了一个回溯次数上限,可以通过var_dump(ini_get('pcre.backtrack_limit'));查看当前环境下的上限。
eregi函数在PHP 5中不区分大小写地搜索字符串,可被截断,在PHP 7中已修复。
in_array函数用于判断数组中是否存在指定的值。
strcmp函数用于比较两个字符串,如果第一个字符串小于第二个字符串返回-1,如果大于返回1,如果相等返回0。
is_numeric函数用于判断变量是否是数字或数字字符串。
basenamemd5函数用于获取字符串的MD5值。
0e漏洞:'0e...'字符串在!= ==比较时会当作0。
MD5值强相等(非字符串):使用FastColl实现字符串强碰撞。
sha1函数在传入数组或无参数时返回NULL。
伪随机数可以使用php_mt_seed - PHP mt_rand() seed cracker破解。
include函数允许文件名结尾有空格。
include_once函数与include的区别在于,当用include_once重复包含时,需要在路径前加上。指标源码输入步骤
import_request_variables函数指定导入GET请求中的变量。
register_globals变量当php.ini中register_globals=ON时,提交test.php?auth=1,$auth变量将自动得到赋值。
parse_str函数和mb_parse_str()解析URL中的querystring,将变量保存到后端环境中。
get_defined_vars()函数返回数组,包含所有变量名和值。
get_defined_functions()函数在PHP7和8中可用。
ReflectionClass类用于实例化Obj类。
$_SERVER[QUERY_STRING]和$_SERVER[REQUEST_URI]中的GET参数不会被URL解码。
$_REQUEST函数会同时获取GET和POST参数。
文件读取函数echo new FilesystemIterator(getcwd());查看当前目录。
路径本地文件路径子文件夹/../本地文件=本地文件,某些系统中,存在/../本地文件=本地文件。
/proc/self/cwd指当前进程的目录。
网络URL路径/manua... swoole文档:wiki.swoole.com/#... think-swoole文档:/manua...
在命令行通过执行"php think swoole"启动服务,应用直接可访问。
swoole服务器持续运行,避免重复磁盘读取与php解析编译,提升性能。修改代码后,think-swoole扩展提供热更新功能,自动重启服务,方便开发调试。生产环境下不建议开启文件监控,性能损耗。
.env设置APP_DEBUG = true默认开启热更新。
热更新参数说明:enable(是否开启),name(监听文件变动类型),include(监听目录文件),exclude(排除目录)。
官方websocket示例:开启think-swoole的websocket功能在\config\swoole.php配置中,创建三个事件并写入事件监听中。可选择保存在\config\swoole.php或app\event.php中,根据实时通讯数量决定保存位置。具体方法见app\listener\SwWsConnect.php、app\listener\SwWsClose.php和app\listener\SwWsMessage.php。
思考:在配置文件中选择保存路径,项目中只有一个实时通讯建议保存在\config\swoole.php中;多个实时通讯保存在app\event.php中。在\app\event.php中使用swoole.websocket.*方法。
编写事件方法:连接事件、关闭事件、message事件,使用php think swoole测试。
总结:在多个实时通讯场景下,emit方法第一参数传入事件名称,如messagecallback。
思考:在think-swoole中若没有与swoole对应的方法,可自定义实现。
实现聊天室room:参考html\room.html 或 html\room-socket-io.html,编写事件绑定、加入房间、离开房间和房间发布聊天逻辑。
事件订阅:配置\app\listener\SwSubscribe.php,类似将原生swoole代码改造成面向对象代码,添加\app\listener\SwSubscribe::class到config\swoole.php的subscribe部分。若同时存在,则向客户端发送多次消息。
Task任务投递:访问/upgrades/p...
解压下载的文件,双击exe文件进行安装。默认安装路径为D:\phpstudy_pro。
若需自定义安装路径,请确保路径无中文字符。
安装完成后,进行Apache服务的配置。
Apache默认端口为。若启动后自动停止,需排查占用端口的进程。
在cmd命令窗口中输入:netstat -ano|findstr "",查找占用端口的进程号。
使用tasklist|findstr "进程号" 命令,确定具体进程名称。
找到占用端口的程序,关闭或禁用其服务,使Apache能正常运行。
测试Apache启动情况,通过浏览器访问http://localhost/,页面显示“站点创建成功”表示Apache安装成功。
接着,启动MySQL服务。
默认版本为5.7.。如若启动后自动停止,处理方式与Apache相同。
建议卸载安装的MySQL数据库,或设置服务为非开机启动。
phpstudy自带MySQL数据库的默认用户名和密码均为“root”。
Lubuntu ..5系统 安装配置Apache2、PHP、Mysql的笔记
在Ubuntu ..5系统中,配置Apache2、PHP和MySQL的步骤如下: 首先,安装并启动Apache2服务器(Apache/2.4.),参考资料:
如何禁止Ubuntu中Apache2浏览目录。启用rewrite模块,实现无www域名自动跳转,执行如下步骤:使用`sudo a2enmod rewrite`启用rewrite模块。
确认模块加载:在终端中,进入Apache安装目录的bin或sbin文件夹,运行`apachectl -M`查看`rewrite_module`是否已加载。
修改`apache2.conf`文件,添加相应重写规则,并在网站根目录`/var/www/html`下创建`.htaccess`文件,替换相应域名。
确保`.htaccess`权限设置为,防止攻击。
接下来,安装PHP 7.2.,通过`sudo nano`编辑`/etc/php/7.2/apache2/php.ini`,启用gd2、mysqli和mbstring扩展,开启错误显示。重启Apache以应用更改。 安装MySQL . Distrib 5.7.,备份数据库,处理可能出现的ERROR()访问权限问题,参考相关解决步骤。 保护MySQL数据库,创建用户和设置权限,注意使用安全的密码。同时,进行必要的文件编码转换和文件权限调整。 Memcache的安装使用推荐文章,安装后记得重启服务以应用配置更改。对于sendmail,需调整配置以实现外网访问和解决启动速度问题。 系统防火墙ufw的安装和sendmail的配置也需按照相关指南进行。对于系统错误提示,可以修改设置以减少弹窗。 安装python3.8时,注意检查并可能调整Python库。FTP服务器配置需解决连接和权限问题,包括文件上传权限和防火墙设置。 最后,批量更改文件权限和使用tar进行文件压缩与解压缩是备份和管理文件的重要操作。