地听说这个功能需求的时候,立即就蒙了,不骗大家!首先PHP的socket几乎都没使用过,其次没有听说过post还能用PHP的socket来模拟的呢!后来找了个案例看了看,才明白其实没有那么高深,只不过战地还不清楚post的原理和本质而已,其实本质就是发送给目的程序一个标志为post的协议串如下:

POST /目的程序 HTTP/1.1

Accept: */*

Accept-Language: zh-cn,en-us;q=0.5

Content-Type: application/x-www-form-urlencoded

User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; .NET CLR

1.0.3705; .NET CLR 1.1.4322)

Host: 要发送到的主机地址

Content-Length: 发送数据的长度

Pragma: no-cache

Cache-Control: no-cache

username=php&password=iask //post发送的数据

我想大家对form的post方法应该是最熟悉不过了,例如我们想吧用户名和密码发送给某个页面的时候,点击有两个文本域的表单的提交按钮,这个表单发送到action程序的就是以上数据。知道了这一点我想就不难了。

这时候我们只需要用php的socket打开一个端口,例如80端口,把以上信息利用这个端口发送给目的程序就行了。

我们如何在一个端口上建立一个socket信道呢?

在PHP中是如此简单呢!

fsocketopen(主机名称,端口号码,错误号的接受变量,错误提示的接受变量,超时时间)

主机名称就是你需要发送数据的目的地;

端口号就是这个目的程序会在哪个端口等着你的数据;

错误号的接受变量,这个是如果建立socket不成功的时候返回的错误编号;

错误提示的变量,是错误的时候返回的错误提示信息;

超时时间,就是post数据之后如果对方没有回应信息,等待的最长时间。

如果不出意外(你正确的设置fsocketopen()函数的参数)的话,一个socket信道现在已经打开了,我们下一步需要做的就是,通过这个打开的信道把post请求协议发给目的程序,这时候可以使用fwrite或者fputs函数中的任意一个,把post的请求格式发给fsocketopen()打开的句柄,这时候一个伟大的socket模拟的post请求就诞生了。顺便说一下啊:

你发送的时候可不能把我的post请求格式直接ctrl + V过去,你没看见里面的汉字等你自己去填写的吗?

以上是文字的描述,如果大家觉得说的非常垃圾,非常没有说服力的话,下边有一个现成的程序片段,大家可以看看。

$port = $url['port'] ? $url['port'] :

80; $fp = fsockopen($url['host'], $port, $errno,

$errstr,10); if (!$fp) return "在主机: $url[host] $port 打开socket失败,失败原因是: $errno -

$errstr"; fputs($fp, sprintf("POST %s%s%s HTTP/1.0rn", $url['path'],

$url['query'] ? "?" : "", $url['query'])); fputs($fp, "Host:".$url['host']."rn"); fputs($fp, "Content-type:

application/x-www-form-urlencodedrn"); fputs($fp, "Content-length: " . strlen($encoded) .

"rn"); fputs($fp, "Connection: closernrn"); fputs($fp, "$encoded ");

对了还是顺便说一下吧,fgets($fp,1024);这个可以得到返回值的哦!!已经有不止一个人问过我咋接受返回了!!

php socket 用户名密码,PHP用socket模拟post之fsocketopen相关推荐

  1. java http 用户名密码_Web后端语言模拟http请求(带用户名和密码)实例代码大全

    标签: RESTful API是目前比较成熟的一套互联网应用程序的API设计理论.而随着RESTful API的成熟和流行,应用开发方面就需要以模拟http请求的方式来调用RESTful API接口: ...

  2. socket用户名登录c语言,用C语言socket登入斗鱼弹幕服务器的问题

    根据斗鱼给的开发者手册,用struct构建出应用层协议头,发送登入请求,建立连接成功但没有从服务器传回有效消息. 代码不长,边学socket边写的注释. 抓包显示成功的建立了连接,图片放在最后. #i ...

  3. python模拟登录密码加密_有关爬虫模拟登陆时,处理用户名密码加密问题的方法...

    之前爬一家网站的数据,需要登陆之后才能进行:所以当时使用selenium偷鸡了一波: 现在我想尝试用requests方法,结果在登录时,就遇到了用户名密码加密问题 查了下登陆有关的js,找到了加密的方 ...

  4. python中socket怎么用_Python 之socket的应用

    本节主要讲解socket编程的有关知识点,顺便也会讲解一些其它的关联性知识: 一.概述(socket.socketserver): python对于socket编程,提供了两个模块,分别是socket ...

  5. zabbix 创建mysql用户名密码_zabbix3.0 监控mysql服务免用户名密码登录的问题故障处理详细过程...

    1,f中用户名密码无效 在azure云上面,使用Zabbix监控mysql中,发现在/usr/local/mysql/f里面设置的默认用户名密码无效,出不来数据,而且在zabbix服务器上,使用zab ...

  6. openvpn (用户名密码模式)

    目录 一.介绍 1.定义 2.原理 3.加密和身份验证 二.在centos 7.5上搭建openvpn 1.安装openvpn 和easy-rsa(该包用来制作ca证书) 2.配置/etc/openv ...

  7. python输入用户名密码、三次输入失败、退出程序_Python3练习-输入用户名输入三次错误即锁定该用户,提示登录失败...

    介绍一下会用到的一些内容 Python3打开.读取和关闭文件的方法 1 file = open('D:\passwd.txt','r') #打开文件 2 content = file.readline ...

  8. 网络协议之:socket协议详解之Socket和Stream Socket

    文章目录 简介 Socket是什么 Stream Socket 使用socat创建一个TCP服务器 使用ss检查TCP连接 使用nc连接socket 总结 简介 不管是在普通的网络编程中还是在nett ...

  9. [WCF安全系列]认证与凭证:用户名/密码认证与Windows认证

    如果要给认证下一个定义,我个人的倾向这样的定义:认证是确定被认证方的真实身份和他或她申明(Claim)的身份是否相符的行为.认证方需要被认证方提供相应的身份证明材料,以鉴定本身的身份是否与声称的身份相 ...

最新文章

  1. 新生选课系统使用指南
  2. nginx的安装和使用(一)
  3. java hello work_Java入门教程系列 – 第一个程序 “hello, world”
  4. 经典排序算法 - 鸽巢排序Pigeonhole sort
  5. Follow me!百万奖金由你拿 | 精准资助机器学习(三)
  6. 一对多,多对一,多对多的关系
  7. 聊聊高并发(二十七)解析java.util.concurrent各个组件(九) 理解ReentrantLock可重入锁
  8. 模糊理论在机器人传感器中的应用_智能家电中的传感器应用大全
  9. Python学习之快速入门
  10. linux-vim-可视行模式
  11. 马斯克点赞中国新能源汽车产业,特斯拉加快中国超级充电网络布局
  12. MFC初探 —— 双击Picture Control具体位置放大图片
  13. 教你玩转ACDSEE
  14. flex:1代表什么
  15. 细胞穿膜肽( CPPs)偶联肽核酸H region-PNA|Arg-PNA|Lys-PNA|Cationic-PNA|47Tat57-PNA的特性
  16. 计算机窗口闪屏,电脑玩游戏闪屏是什么原因(对应的解决方法)
  17. composer类库—汉字转拼音
  18. 南邮通达计算机组成,计算机组成习题课(南邮)
  19. 一文搞懂k近邻(k-NN)算法(一)
  20. 通过C++类方法地址调用类的虚方法

热门文章

  1. 《Docker进阶与实战》——3.2节使用Docker image
  2. 揭秘富人的22种习惯与风格
  3. 怎么查看和修改 MySQL 的最大连接数?
  4. PHP环境服务器搭建
  5. 07/11/20 资料整理
  6. Spring中RedirectAttributes的用法
  7. Mozilla计划向Firefox浏览器中添加违规警告
  8. dubbo异步调用传递性解决方法
  9. argz_create_sep函数
  10. windows下启动/关闭Sybase数据库服务器