Joey Morani
Joey Morani

Reputation: 26581

Fill in an external form using cURL?

Can anyone suggest how I could fill in this form with my own variables and submit it using cURL/PHP? Is it possible, as it seems to use JavaScipt instead of the normal 'post' to submit the content. Thanks for the help.

Upvotes: 0

Views: 1090

Answers (2)

Devin M
Devin M

Reputation: 9752

It is using POST, however it submits the form data to several PHP scripts on that page. You would be best off downloading TamperData for Firefox and examining the communication to those scripts. Here is the information I got when submitting that form on a gist. An example session is provided below:

15:13:13.371[1631ms][total 1631ms] Status: 200[OK]
POST http://tools.950buy.com/modules/2rss/2rss.php Load Flags[LOAD_BYPASS_CACHE  LOAD_BACKGROUND  ] Content Size[-1] Mime Type[text/html]
   Request Headers:
      Host[tools.950buy.com]
      User-Agent[Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.1) Gecko/20100101 Firefox/6.0.1]
      Accept[*/*]
      Accept-Language[en-us,en;q=0.5]
      Accept-Encoding[gzip, deflate]
      Accept-Charset[ISO-8859-1,utf-8;q=0.7,*;q=0.7]
      Connection[keep-alive]
      Content-Type[application/x-www-form-urlencoded; charset=UTF-8]
      X-Requested-With[XMLHttpRequest]
      Referer[http://tools.950buy.com/rss-submit/]
      Content-Length[117]
      Cookie[__utma=201106987.2026695530.1315001346.1315001346.1315001346.1; __utmb=201106987.3.10.1315001346; __utmz=201106987.1315001346.1.1.utmcsr=stackoverflow.com|utmccn=(referral)|utmcmd=referral|utmcct=/questions/7289661/fill-in-an-external-form-using-curl; __utmc=201106987]
      Pragma[no-cache]
      Cache-Control[no-cache]
   Post Data:
      url[http://www.test.com]
      title[Test Title]
      WebSite[http://www.test.com]
      email[[email protected]]
      description[Test Description]
   Response Headers:
      Date[Fri, 02 Sep 2011 22:13:16 GMT]
      Server[Apache]
      X-Powered-By[PHP/5.2.17]
      Vary[Accept-Encoding]
      Connection[close]
      Transfer-Encoding[chunked]
      Content-Type[text/html; charset=utf-8]

Upvotes: 1

Galen
Galen

Reputation: 30170

It is done via javascript. It submits a post request for each checkbox on the page

These are the functions you need to replicate:

function ActionSubmit(){
    var Posturl="/modules/";
    var url=$("#url").val();
    var title=$("#title").val();
    var WebSite=$("#WebSite").val();
    var email=$("#email").val();
    var description=$("#description").val();
    var data='url='+url+"&title="+title+"&WebSite="+WebSite+"&email="+email+"&description="+description;
    var str="";
    if (formVaildate()){
         $("[name='checkbox'][checked]").each(function(){
             str=$(this).val();
             strs=str.toLowerCase()
             strs=strs.replace("-","_");
             Posturl= Posturl+strs+"/"+strs+".php";
             URLSubmit(Posturl,data,str);
             Posturl="/modules/";
       });
    }
}
function URLSubmit(url,data,str){   
    $.ajax({
            url: url,
            type: 'POST',
            data: data,
            beforeSend:function(){
                    $("#"+str+"_State").html("Please wait...");
                },
            complete:function(){
                    $("#"+str+"_State").html("<img src='/images/right.gif'>");
                },
            success:function(msg){
               if (msg!=""){            
                $("#"+str+"_State").html("<img src='/images/right.gif'>");
               }else{
                   alert(msg);
               }
              }
        });

}

Upvotes: 0

Related Questions