1

我正在为 mIRC 编写一个脚本,该脚本将从我的网络服务器获取数据,该代码是通过 PHP 生成的。

当我通过浏览器(firefox)连接时,它工作得很好。但是,当我通过 mIRC 套接字连接时,服务器无法“编译”我的 PHP 代码。我仍然可以获取任何其他文本或 html。好像网络服务器(litespeed)不承认我的http请求(?!)

这是我传递给服务器的标头信息:

  sockwrite -n ccsw_sock_reg GET /ccsw/ccsw.php?action=register&username= $+ %ccsw_username_temp $+ &password= $+ %ccsw_username_temp HTTP/1.1
  sockwrite -n ccsw_sock_reg Host: www.[HIDDEN].com
  sockwrite -n ccsw_sock_reg Connection: close
  sockwrite -n ccsw_sock_reg User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0
  sockwrite -n ccsw_sock_reg Accept-Encoding: gzip
  sockwrite -n ccsw_sock_reg Accept:Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  sockwrite -n ccsw_sock_reg Accept-Language: en-us,en;q=0.5
  sockwrite -n ccsw_sock_reg Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7
  ;sockwrite -n ccsw_sock_reg Cache-Control: no-cache
  sockwrite -n ccsw_sock_reg Cache-Control: no-store, no-cache, must-revalidate
  sockwrite -n ccsw_sock_reg Cache-Control: post-check=0, pre-check=0
  sockwrite -n ccsw_sock_reg Pragma: no-cache
  sockwrite -n ccsw_sock_reg $crlf 

我试过使用 apache 服务器而不是 litespeed,但它也没有解决。我仍然没有显示任何 PHP 生成的代码。

我错过了一些标题吗?我应该以完全不同的方式来做吗?

更新:

mIRC 代码:

alias testsock {
  sockclose testsock
  sockopen testsock www.[HIDDEN].com 80
}
on *:sockopen:testsock: {
  sockwrite -nt testsock GET /ccsw/ccsw.php?action=register&username= $+ %ccsw_username_temp $+ &password= $+ %ccsw_username_temp HTTP/1.0
  sockwrite -nt testsock Host: www.[HIDDEN].com
  sockwrite -nt testsock $crlf  
} 

on *:sockread:testsock: {
  %ccsw_content_start = 0

  if ($sockerr > 0) return
  sockread %temp
  while ($sockbr) {
    echo response: %temp
    sockread %temp
  }
}

回复:

reponse: HTTP/1.0 200 OK
reponse: Date: Thu, 02 May 2013 14:45:07 GMT
reponse: Server: LiteSpeed
reponse: Connection: close
reponse: X-Powered-By: PHP/5.2.17
reponse: Content-Type: text/html
reponse: Content-Length: 43
reponse:

在最后一个“reponse:”之后,我应该得到一个带有“reponse:true”的php生成行,“reponse:”只是我的回声的前缀..

4

1 回答 1

0

如果您仔细看,您会看到以下响应标头
“Content-Length: 43”
,这意味着您正在收到响应,问题出在您的 SOCKREAD 事件中。

试试下面的代码:

on *:sockread:testsock: {
  if ($sockerr) {
    return
  }

  var %line
  :start
  sockread %line
  if (%line) {
    echo -ag SOCKREAD: %line
  }
  if ($sockbr) {
    goto start
  }
}
于 2013-05-03T17:48:26.737 回答