Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP使用fsockopen获取和发布数据_Php_Sockets_Variables_Post_Fsockopen - Fatal编程技术网

PHP使用fsockopen获取和发布数据

PHP使用fsockopen获取和发布数据,php,sockets,variables,post,fsockopen,Php,Sockets,Variables,Post,Fsockopen,如何使用PHP通过同一套接字获取和发布数据?我有以下代码: $fp = fsockopen("ssl://ovi.rdw.nl", 443, $errno, $errstr, 30); if(!$fp){ echo $errstr; }else{ $post_data = 'ctl00$cntMaincol$btnZoeken=Zoeken&ctl00$cntMaincol$txtKenteken=83FHVN'; $out = "GET /Default.aspx HTTP/

如何使用PHP通过同一套接字获取和发布数据?我有以下代码:

$fp = fsockopen("ssl://ovi.rdw.nl", 443, $errno, $errstr, 30);
if(!$fp){
    echo $errstr;
}else{
$post_data = 'ctl00$cntMaincol$btnZoeken=Zoeken&ctl00$cntMaincol$txtKenteken=83FHVN';

$out = "GET /Default.aspx HTTP/1.0\r\n";
$out .= "Host: ovi.rdw.nl\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);

while(!feof($fp)){
    $data = fgets($fp);
    $view_state = getViewState($data);
    if($view_state != ""){
        echo $view_state."<br />";
        break;
    }
}

$post_data = "__VIEWSTATE={$view_state}&".$post_data;

$out = "POST /Default.aspx HTTP/1.0\r\n";
$out .= "Host: ovi.rdw.nl\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Content-length: " . strlen($post_data) . "\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
fwrite($fp, $post_data);
while(!feof($fp)){
    echo fgets($fp);
}
}
$fp=fsockopen(“ssl://ovi.rdw.nl“,443,$errno,$errstr,30);
如果(!$fp){
echo$errstr;
}否则{
$post_数据='ctl00$cntMaincol$btnZoeken=Zoeken&ctl00$cntMaincol$txtKenteken=83FHVN';
$out=“GET/Default.aspx HTTP/1.0\r\n”;
$out.=“主机:ovi.rdw.nl\r\n”;
$out.=“连接:关闭\r\n\r\n”;
fwrite($fp,$out);
而(!feof($fp)){
$data=fgets($fp);
$view\u state=getViewState($data);
如果($view\u state!=“”){
echo$view_state.“
”; 打破 } } $post_data=“\uu视图状态={$view_state}&”$post_数据; $out=“POST/Default.aspx HTTP/1.0\r\n”; $out.=“主机:ovi.rdw.nl\r\n”; $out.=“内容类型:应用程序/x-www-form-urlencoded\r\n”; $out.=“内容长度:”.strlen($post\u数据)。“\r\n”; $out.=“连接:关闭\r\n\r\n”; fwrite($fp,$out); fwrite($fp,$post_数据); 而(!feof($fp)){ 回波fgets($fp); } }

数据是正确的,但发布的过程并不顺利。我错了什么?

别忘了

别忘了

您在同一个连接中执行GET和POST,这对HTTP/1.0无效,您已通过连接指定并重新确认:关闭。注释掉你的get部分,然后写下这篇文章


您可以通过post获取数据,因此不需要执行get和post操作。或者,如果确实需要执行get和post,请关闭套接字,然后重新为post建立套接字。

如果您在同一连接中执行get和post,则这对HTTP/1.0无效,您已通过连接:close指定并重新确认了HTTP/1.0。注释掉你的get部分,然后写下这篇文章


您可以通过post获取数据,因此不需要执行get和post操作。或者,如果确实需要执行get和post,请关闭套接字,然后重新为post建立套接字。

在某些情况下,Curl太重,无法使用post_to_host()


post to host php项目位置:

Curl在某些情况下太重,无法使用post to host()


post to host php项目位置:

我需要首先执行get以获取$view\u状态值,否则它将为空。当我重新创建一个新连接时,$view\u的状态会有所不同,所以这不会有帮助。然后在GET之后,关闭套接字,并为POST打开另一个连接。在get缓冲区清空后,连接应该会断开,并且您的帖子将被忽略。哎呀,请重新阅读您的声明。好的,如果你必须有相同的连接,你需要切换到http 1.1,并通过连接使用持久连接:Keep Alive而不是connection:closeOk,然后我开始执行get请求,使用fflush刷新,然后执行post?我需要开始执行get以获取$view\u状态值,否则它将为空。当我重新创建一个新连接时,$view\u的状态会有所不同,所以这不会有帮助。然后在GET之后,关闭套接字,并为POST打开另一个连接。在get缓冲区清空后,连接应该会断开,并且您的帖子将被忽略。哎呀,请重新阅读您的声明。好的,如果你必须有相同的连接,你需要切换到http 1.1,并通过连接使用持久连接:Keep Alive而不是connection:closeOk,然后我得到get请求firts,使用fflush刷新,然后执行post?它通过流刷新任何缓冲数据。它通过流刷新任何缓冲数据。
//GET:
$str_rtn=post_to_host($str_url_target, array(), $arr_cookie, $str_url_referer, $ref_arr_head, 0);

//POST:
$arr_params=array('para1'=>'...', 'para2'=>'...');
$str_rtn=post_to_host($str_url_target, $arr_params, $arr_cookie, $str_url_referer, $ref_arr_head);

//POST with file:
$arr_params=array('para1'=>'...', 'FILE:para2'=>'/tmp/test.jpg', 'para3'=>'...');
$str_rtn=post_to_host($str_url_target, $arr_params, $arr_cookie, $str_url_referer, $ref_arr_head, 2);

//raw POST:
$tmp=array_search('uri', @array_flip(stream_get_meta_data($GLOBALS[mt_rand()]=tmpfile())));
$arr_params=array('para1'=>'...', 'para2'=>'...');
file_put_contents($tmp, json_encode($arr_params));
$arr_params=array($tmp);
$str_rtn=post_to_host($str_url_target, $arr_params, $arr_cookie, $str_url_referer, $ref_arr_head, 3);

//get cookie and merge cookies:
$arr_new_cookie=get_cookies_from_heads($ref_arr_head)+$arr_old_cookie;//don't change the order

//get redirect url:
$str_url_redirect=get_from_heads($ref_arr_head, 'Location');