PHP curl表单没有动作和js事件

时间:2014-06-30 03:44:29

标签: javascript php forms curl

我正在尝试使用curl发布一些数据并从不是我的网站检索它,网站表单似乎没有表单操作,并且当您提交数据时页面不会重新加载点击按钮后似乎还有一些js。

$url = "http://emonitoring.poczta-polska.pl/#";

$parm = "numer=RR123456789PL";

这是卷曲:

array(
  CURLOPT_URL   =>  $url,     
  CURLOPT_POST  =>  TRUE,
  CURLOPT_POSTFIELDS     => $parm,
  CURLOPT_RETURNTRANSFER => TRUE,
  CURLOPT_FOLLOWLOCATION => TRUE
);

我按预期执行并初始化curl,只显示重要部分。这里还有实时http头输出:

    POST /wssClient.php HTTP/1.1
Host: emonitoring.poczta-polska.pl
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Content-Type: application/x-www-form-urlencoded
Origin: http://kody.poczta-polska.pl
Referer: http://kody.poczta-polska.pl/
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36

HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Content-Length: 1215
Content-Type: text/html; charset=UTF-8
Date: Mon, 30 Jun 2014 03:31:59 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Server: Apache
X-Cnection: close

目前它只是显示页面而且看起来不像是提交了表单,我还尝试将网址设置为:“http://emonitoring.poczta-polska.pl/wssClient.php”,然后告诉他输入数字。

2 个答案:

答案 0 :(得分:2)

在这种情况下,您转到chrome,点击F12,转到网络,提交表单并查看发送到服务器的内容。我看到这个发布了

s:fggsbnqu033gqiipemr50fer56
n:RR123456789PL
l:

如果您查看来源,则会看到

if (jQuery('#numer').val().length == 19) {
  var numer = dodajck(jQuery('#numer').val())
} else var numer = jQuery('#numer').val();


jQuery.ajax({
  type: 'post',
  cache: true,
  dataType: 'html',
  data: ({
    s: 'fggsbnqu033gqiipemr50fer56',
    n: numer,
    l: ''
}),
url: 'wssClient.php',

s:....可能意味着您需要在其服务器上进行会话以便能够调用wssClient - 如果是这样,您将需要CURL with sessions

如果您可以在没有会话的情况下呼叫他们的服务器,或者在您打电话之前有一个会话,您可以使用parm卷曲n =而不是numer =并且您需要使用他们的函数计算校验和,这可以很容易地转换为PHP

function dodajck(numer) {
    // dodatkowe sprawdzenia i określenie wag oraz części numeru, która
    // ma zostać zważona
    //String wagi;
    //String doWazenia;

    var wagi = "3131313131313131313";
    var doWazenia = String(numer);
    // wyliczenie sumy iloczynów waga * cyfra
    var suma = 0;
    for (var i = 0; i < 19; i++)
    suma = suma + Number(doWazenia.substring(i, i + 1)) * Number(wagi.substring(i, i + 1));
    // ostateczne sprawdzenia


    // przykład numeru 20-cyfrowego
    // 00
    // 1 - rodzaj?
    // 590 -- kraj 590 = PL
    // 0773 -- firma 0773 = PP
    // 3 -- rodzaj przesyłki
    // 12345678 - numer przesyłki
    // 9 - CK
    // ważone są numery od 1 do 19
    var ck = 10 - suma % 10;
    if (ck == 10) ck = 0;

    return String(numer) + String(ck);
}

答案 1 :(得分:1)

表格通过AJAX提交。要查看确切的HTTP请求,只需启动Chrome或Firefox中的开发人员工具(F12)即可。导航到“网络”标签,然后点击其网站上的提交按钮。你应该看到一个被解雇的请求。如果你打开它,你将能够看到自己提出请求所需的一切 - URL,参数及其格式,HTTP标题值等 - 以及你应该得到的响应。

希望这有帮助!