首页
学习
活动
专区
圈层
工具
发布

关于PHP流不得不说的那些事

通过这些协议我们的程序可以读取、解析这些协议所对应的相关内容。比如说http协议,服务器、客户端浏览器都是因为支持了相同的http协议规范,所以才能够通过这个协议来进行传输,而传输的内容是什么呢?...小伙伴们可以试试用 php -S localhost:8081 来测试下上述代码,访问 http://localhost:8081 的话,浏览器上会输出 output 打印的内容,而命令行这边则会打印...input 访问请求的原始数据的只读流 这个相信做过接口开发的大多数人都会接触过。当前端或客户端使用 body raw 方式发送数据时,就使用这个协议来接收POST中的原始 body 内容。...echo file_get_contents("php://input"); 非常简单,这里我们直接使用 postman 来模拟这种请求,可以看我们是能够正常接收到 body raw 里面的内容的。...最主要的是,通过学习后我们更进一步的了解了它们的作用及适用的场景,这样就可以在将来需要的时候灵活使用。

64210

SSRF原理实战及修复方式

一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。...php下面函数的使用不当可能会导致SSRF curl() file_get_contents() fsockopen() 实战 观察URL,发现服务端提供了URL查询 ?...攻击内网的web应用,主要是使用GET参数就可以实现的攻击(比如struts2,sqli等) 5....image=(地址)的就可能存在SSRF漏洞 排除法一: 你可以直接右键图片,在新窗口打开图片,如果是浏览器上URL地址栏是http://www.baidu.com/img/bd_logo1.png,说明不存在...排除法二: 你可以使用burpsuite等抓包工具来判断是否不是SSRF,首先SSRF是由服务端发起的请求,因此在加载图片的时候,是由服务端发起的,所以在我们本地浏览器的请求中就不应该存在图片的请求.

1.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP-文件操作

    /test.txt',$str); //将字符串写到文本中 小结: 1、 所有的“写”操作都是清空重写 2、在文本中换行是\r\n \r:回车 光标移动到当前行的最前面 \n:换行 将光标下移动一行...:字符流和二进制流 二进制流的读取按文件大小来读的。.../face.jpg'; $fp=fopen($path,'r'); header('content-type:image/jpeg'); //告知浏览器下面的代码通过jpg图片方式解析 echo fread...($fp,filesize($path)); //二进制读取 多学一招:file_get_contents()也可以进行二进制读取 header('content-type:image/jpeg');.../face.jpg'); 小结: 1、文本流有明确的结束符,二进制流没有明确的结束符,通过文件大小判断文件是否读取完毕 2、file_get_contents()既可以进行字符流读取,也可以进行二进制读取

    71530

    SSRF原理实战及修复方式

    一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。...php下面函数的使用不当可能会导致SSRF curl() file_get_contents() fsockopen() 实战 观察URL,发现服务端提供了URL查询 ?...攻击内网的web应用,主要是使用GET参数就可以实现的攻击(比如struts2,sqli等) 5....image=(地址)的就可能存在SSRF漏洞 排除法一: 你可以直接右键图片,在新窗口打开图片,如果是浏览器上URL地址栏是http://www.baidu.com/img/bd_logo1.png,说明不存在...排除法二: 你可以使用burpsuite等抓包工具来判断是否不是SSRF,首先SSRF是由服务端发起的请求,因此在加载图片的时候,是由服务端发起的,所以在我们本地浏览器的请求中就不应该存在图片的请求.

    2.5K10

    fileclude-CTF 解题思路

    :不、反的意思。 empty函数:只用来判断变量的值是否为NULL。 file_get_contents() 函数:把整个文件读入一个字符串中。 ===:判断值是否相同并且判断值的类型是否相同。...else:条件都不满足的时候才会执行它。 die函数:输出内容并退出程序。  一、题目分析: 打开题目场景发现有if嵌套语句,存在flag.php,并且可以执行这个文件。...第三个if语句说的是file_get_contents() 函数包含file2变量,当满足file2的值等于hello ctf以及值的类型两者相同(类型是字符串),才会执行包含在include函数中的file1...是起始符可以理解为连接拼接的意思,file1是场景代码中的变量,=是赋值的意思。  convert转换,base64,encode编码。 &引用,不同名字访问同一变量的内容。  ...三、解题: 用到的工具有: 火狐浏览器FireFox和Max HackBar火狐浏览器插件(之前那个收费了,这个也可以替代之前那个工具,这个插件可以在火狐浏览器扩展哪里搜索并添加) 1、用火狐浏览器打开场景

    38930

    PHP获取HTTP body内容的方法总结

    PHP 提供了一些杂项输入/输出(IO)流,允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。...本文涉及到了了,php://input,详尽内容请参阅官网:点击查看官网 (http://php.net/manual/zh/wrappers.php.php) php://input 是个可以访问请求的原始数据的只读流...数据流引用了复制的文件描述符,所以如果你打开 php://stdin 并在之后关了它, 仅是关闭了复制品,真正被引用的 STDIN 并不受影响。...php://temp 的内存限制可通过添加 /maxmemory:NN 来控制,NN 是以字节为单位、保留在内存的最大数据量,超过则使用临时文件。...php://filter 目标使用以下的参数作为它路径的一部分。 复合过滤链能够在一个路径上指定。详细使用这些参数可以参考具体范例。

    3.4K10

    编译原理学习笔记-3:词法分析(一)基本过程、正规式和有限自动机

    也就是说,一上来就准备对源程序进行语法分析,但是语法分析无法处理字符流,所以它又回过头调用了词法分析器,将字符流转化成单词流,再去分析它的语法。以此类推,后面每次遇到字符串流,都是这样的一个过程。...对于 ∑* 中的任何一个字 a,若存在一条从初态结点到某一终态结点的通路,且这条通路上所有箭弧的标记符连接成的字等于 a,则称 a 为 DFA M 所识别(读出或接受)。...如果 M 的初态结点同时也是终态结点,那么就说空符号串可以被 M 所识别。 DFA M 可以识别的字的全体记为 L(M)。...对于 ∑* 中的任何一个字 a,若存在一条从初态结点到某一终态结点的通路,且这条通路上所有箭弧的标记符连接成的字等于 a,则称 a 为 NFA M 所识别(读出或接受)。...如果 M 的初态结点同时也是终态结点,或者存在一条从某个初态结点到某个终态结点的 ε 通路,那么就说空符号串 ε 可以被 M 所识别。

    12.2K52

    php的各种 IO流 以及用法

    恩,大家可以翻开php手册,搜索一下  php://是php内置的一个类url操作的协议,它运行我们访问php各种I/O流,至于什么是I/O流,举个例子: echo "hello world";  这个字符串会经过...:http://www.nowamagic.net/academy/detail/12220520,有时间可详细阅读,本文只做功能简单介绍 php://input 是个可以访问请求的原始数据的只读流。... stream_get_contents($memory_f); 注意:关闭文件之后数据将无法读取 php://filter php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用...php://filter 目标使用以下的参数作为它路径的一部分。 复合过滤链能够在一个路径上指定。详细使用这些参数可以参考具体范例。...名称 描述 resource=的数据流> 这个参数是必须的。它指定了你要筛选过滤的数据流。 read=的筛选列表> 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。

    1.5K21

    从零开始,学会 PHP 采集

    > 保存,然后将这个 PHP 文件上传至你的网站空间,通过浏览器访问这个 PHP 文件,浏览器输出 “hello php”。恭喜你!已经写下了第一行 PHP 代码!...key=e825286159f9f57db1b597995d72ae2b&info=你要说的话 我们可以直接在浏览器中访问这个接口地址。...> 运行这行代码,浏览器中显示的应该是和直接去访问原接口地址类似的内容。这就说明我们已经成功地从图灵的接口抓取到了数据。...其实,我们可以通过 get 的方式传递给 PHP 一些参数,以此来动态改变内容。 PHP 中可以使用 $_GET() 来获取 get 方式发送的数据。 那么问题来了,什么是 get 发送数据呢?...仔细研究一下图灵的接口,它的数据传递方式是 图灵接口+你要说的话 这种数据传送方式就是 get。你如果直接在浏览器里访问可以在地址栏看到全部的 get 发送的数据。

    1.9K30

    从零开始,学会 PHP 采集

    > 保存,然后将这个 PHP 文件上传至你的网站空间,通过浏览器访问这个 PHP 文件,浏览器输出 “hello php”。恭喜你!已经写下了第一行 PHP 代码!...key=e825286159f9f57db1b597995d72ae2b&info=你要说的话 我们可以直接在浏览器中访问这个接口地址。...> 运行这行代码,浏览器中显示的应该是和直接去访问原接口地址类似的内容。这就说明我们已经成功地从图灵的接口抓取到了数据。...其实,我们可以通过 get 的方式传递给 PHP 一些参数,以此来动态改变内容。 PHP 中可以使用 $_GET() 来获取 get 方式发送的数据。...仔细研究一下图灵的接口,它的数据传递方式是 图灵接口+你要说的话 这种数据传送方式就是 get。你如果直接在浏览器里访问可以在地址栏看到全部的 get 发送的数据。

    2.3K30

    如何在不会导致服务器宕机的情况下,用 PHP 读取大文件

    我们想要同时读取和处理所有数据,输出处理过的数据或根据我们所读取的内容执行其他操作。我们也可能想要转换一个数据流,而不需要真正访问的数据。...通常被称为管道(大概是因为我们看不到除了两端的管子里面,当然,它也是不透明的),我们可以通过使用流方法实现。让我们先写一个脚本从一个文件传到另一个文件。...我们打开了两文件的句柄,第一个是只读模式,第二个是只写模式,然后我们从第一个复制到第二个中。最后我们关闭了它,也许使你惊讶,内存只占用了393KB 这似乎很熟悉。像代码生成器在存储它读到的每一行代码?...中的流”中已经被全面介绍了。...API终端是安全的,但我们仍然需要使用http上下文属性(用于http和https)。我们设置一些消息头参数,并打开一个文件句柄到API。由于上下文处理写操作,我们可以将句柄打开为只读。

    1.5K90

    Web如何适配无障碍?

    它补充了 HTML,以便在没有其他机制时可以将应用程序中常用的交互和小部件传递给辅助技术。...例如,ARIA 支持 HTML4 中的可访问导航地标、JavaScript 小部件、表单提示和错误消息、实时内容更新等。...警告:  许多这些小部件后来被合并到 HTML5 中,如果存在这样的元素,开发人员应该更喜欢使用正确语义的 HTML 元素而不是使用 ARIA。例如,原生元素具有内置的键盘可访问性、角色和状态。...但是,如果您选择使用 ARIA,则您有责任在脚本中模仿(等效)浏览器行为。常见的属性这里列举了2个最常用的属性。...部分读屏软件可能无法打开链接将链接的onclick事件放在父结点触发,父节点设置role="button"或"link"只有1个链接,且整体内容与该链接强相关(如“您已阅读并同意《协议》”)打开链接很方便

    4.1K63

    PHP共享内存详解 前言

    PHP 中几种常见的共享内存使用方式 APC 可以缓存 PHP 的 opcode 提高应用的性能,可以在同个 PHP-FPM 进程池的进程间共享数据,常用功能如下: apc_store apc_fetch...创建内存段 共享内存函数类似于文件操作函数,但无需处理一个流,您将处理一个共享内存访问 ID。第一个示例就是 shmopopen 函数,它允许您打开一个现有的内存段或创建一个新内存段。...此函数非常类似于经典的 fopen 函数,后者打开用于文件操作的流,返回一个资源供其他希望读取或写入该打开的流的函数使用。让我们看看 shmopopen的用法: 使用它时无法被删除。shmop_delete 函数将该内存段标记为删除,阻止任何其他进程打开它。要删除它,我们需要关闭该内存段。 5....在本地测试中,使用 for 循环操作时如果不使用shmop_close 关闭资源会出现无法打开共享内存的错误警告。这应该是因为正在共享内存被上一次操作占用中还没有释放导致。

    1.4K10

    chrome frame节点 取_Chrome Frame插件解决IE浏览器兼容问题

    大家好,又见面了,我是你们的朋友全栈君。 时不时碰到客户的浏览器为IE7,IE8,甚至IE6的,他们不能升级浏览器,因为升级后,机器中其它的重要系统无法访问。...X-UA-Compatible是自从IE8新加的一个设置,对于IE8以下的浏览器是不识别的。 通过在meta中设置X-UA-Compatible的值,可以指定网页的兼容性模式设置。...在网页中指定的模式优先权高于服务器中(通过HTTP Header)所指定的模式。...IE内核渲染,设置为1是使用Google Chrome Frame渲染所打开的网页.我们这里设置为1. 2.4 chrome访问网址列表;注册表中“HKEY_CURRENT_USER\Software\...Google\ChromeFrame”新建一个子项(KEY)取名为”RenderInGcfUrls;其中添加的多个字符串值默认使用chrome访问,可用通配符;例如,上图的”*google“可以理解为所有地址中包含

    1.7K30

    SSRF学习

    服务器端请求伪造攻击将域中的不安全服务器作为代理使用,这与利用网页客户端的跨站请求伪造攻击类似(如处在域中的浏览器可作为攻击者的代理)。...VPN进行内网访问;这里我们假指自己没有访问内网的权限,只有访问B网站的方式,而学校的所有网站都是建立在同一个(内网)网络体系中,如此我们可以通过校园B网来间接访问教务C网。...所指向的图片是用户所无法直接获取的,但是可以通过同一个内网中的服务器进行获取。...fscokopen() fscokopen()函数可以帮助我们打开一个网络连接或一个套接字连接;开发者在项目中使用函数可以和服务器建立TCP连接,传输数据;对于用户而言实现获取指定的数据(文件或HTML...内网WEB指纹识别/访问 通过目录和一些特征文件来识别内网使用的框架、模块、CMS的类型 使用各种协议进行请求访问,比如:读取文件 采用ftp:// file://等协议 攻击内网应用程序(利用跨协议通信技术

    69830

    关于绝对路径和相对路径

    $test2TxtAbsolute2),""; echo file_get_contents($test2TxtRelative),""; 同样,我们可以使用".....或者linux,该路径能获取到服务器环境的文件信息,只能通过服务端自身(例如运行的php代码,shell命令等)调用 url绝对路径,在浏览器地址栏或者在html代码中显示,url属于http协议,...需要跟服务端交互,才能正确的获取文件信息,浏览器通过url绝对路径,可获取到http服务器绑定目录的文件信息 url相对路径,在html代码中显示,可通过相对路径获取到该网页和http服务器绑定目录下的文件信息...用户绝对路径,在浏览器地址栏和标签中,都可通过本地绝对路径去获取本机的文件,例如在浏览器输入:"E:\tioncico\othe\a.cn\test.txt",即可获取到本机E磁盘下的这个文件...用户相对路径,同样,在浏览器中,如果你直接通过"E:\tioncico\othe\a.cn\index.html"打开一个html,里面html标签如果写了绝对路径,也可通过该相对路径,获取到本机磁盘下的相对路径文件

    3.2K10

    PHP文件流处理原则

    $GLOBALS["HTTP_RAW_POST_DATA"] 只能在 php.ini 文件配置中打开 always_populate_raw_post_data 开关时使用,否则它会返回 NULL。...file_get_contents('php://input') 可以在任何情况下使用,因为它不依赖于某个特定的配置开关。...它通常用于处理海量数据或需要持续不断地接收数据的情况。在流式处理中,数据被分成小块,并逐一处理。使用流式处理的好处使用流式处理技术可以减少内存占用,提高处理效率,减少处理时间。...在 PHP 中,可以使用 fread() 和 fwrite() 函数来进行流式处理。底层原理实现流式处理的底层实现原理是通过分批次读取和写入数据实现的。...当缓冲区的数据被处理完后,可以再从输入流中读取下一个数据块,重新填充缓冲区。相同的处理方式可以应用于输出流,即一个数据块被写入缓冲区,并在满足一定条件后同时写入输出流中。

    59111

    PHP模拟发送POST请求之四、加强file_get_contents()发送POST请求

    query=query'); echo $content;//输出HTML文档信息 但是,我们会发现,通这两种方式我们只能通过GET方式发送信息并读取网页信息,而且,这两种方式还面临着超时,无法处理头信息等问题... [, resource $context [, int $offset [, int $maxlen ]]]] ) 我们发现它还有其他可选参数,我们可以通过这些参数的设置,在发送网页请求的同时,POST...$filename:不用多说,填写我们要访问的URL字符串就行。...$use_include_path:是否使用文件之前include_path()设置的路径,如果使用,在文件地址找不到时,会自动去include_path()设置的路径去寻找,网页地址中我们设置为false...对于像 file_get_contents()、file_put_contents()、readfile()直接使用文件名操作而没有文件句柄的函数来说更有用。

    2.5K80

    简易聊天室的实现 - Ajax轮询与长轮询

    什么是轮询   轮询即rolling,通过Ajax循环访问服务端直到获取信息返回并关闭连接。 通俗点讲就是连续访问服务器,获取服务端数据并在前端输出。...Ajax轮询前端 index.html通过每隔一段时间访问后端 server.php并通过Jquery更新页面信息,后端负责判断是否有新信息通过json的形式传递给前端,我们来看一个样例: 前端: Ajax长轮询   对于聊天室的实现,相比Ajax轮询,Ajax长轮询是一个更好的方式。它优化了客户端与服务端之间的信息获取逻辑。...> 示例demo XCHAT   可以打开两个浏览器界面测试,由于极度占据服务器资源,可能在一定时间会关闭!...对于聊天室还是推荐使用Websocket等方式 完整样例   对于Ajax长轮询我提供了一个完整的样例,包括前端后端,可以直接部署参照. Github仓库

    1.5K11

    流式法则 处理大文件的优缺利弊

    $GLOBALS["HTTP_RAW_POST_DATA"] 只能在 php.ini 文件配置中打开 always_populate_raw_post_data 开关时使用,否则它会返回 NULL。...file_get_contents('php://input') 可以在任何情况下使用,因为它不依赖于某个特定的配置开关。...它通常用于处理海量数据或需要持续不断地接收数据的情况。在流式处理中,数据被分成小块,并逐一处理。 使用流式处理的好处 使用流式处理技术可以减少内存占用,提高处理效率,减少处理时间。...在 PHP 中,可以使用 fread()和 fwrite() 函数来进行流式处理。 底层原理实现 流式处理的底层实现原理是通过分批次读取和写入数据实现的。...当缓冲区的数据被处理完后,可以再从输入流中读取下一个数据块,重新填充缓冲区。相同的处理方式可以应用于输出流,即一个数据块被写入缓冲区,并在满足一定条件后同时写入输出流中。

    40420
    领券