日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php socket 用户名密码,PHP用socket模拟post之fsocketopen

發布時間:2025/3/20 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php socket 用户名密码,PHP用socket模拟post之fsocketopen 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

地聽說這個功能需求的時候,立即就蒙了,不騙大家!首先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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。