php - 使用fsockopen进行PHP GET和POST数据

标签 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/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);
}
}

数据正确,但是发布不顺利。我有什么事

最佳答案

您正在同一连接中执行GET和POST,这对于您指定的HTTP/1.0无效,并已通过连接重新保证:close。注释掉您得到的部分,然后发表即可。

您可以通过发布来获取数据,因此您无需进行获取和发布。或者,如果您确实需要获取和张贴信息,请关闭套接字,然后再次为张贴信息重新建立套接字。

关于php - 使用fsockopen进行PHP GET和POST数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4135260/

相关文章:

php - 准备好的 PDO 查询返回 0 个受影响的行

c - 为什么recvfrom在UDP消息上存储0.0.0.0的IP地址?

java - 如何将数据以变量的形式从一个Jframe传递到另一个Jframe

php - 将 csv 文件行的每一项放入变量中

php - 我需要一个 mysql group by query 以在每个员工的一行中从每个员工的日期时间列返回每小时条目

PHP 将数组元素添加到数据库不起作用

php - 发生数据库错误错误号: 1066 Not unique table/alias:

c++ - 为什么在 epoll 中推荐 NON-BLOCKING sockets

javascript - javascript可以接收套接字请求吗?

C 变量指定为 long long 但被识别为 int