Solved

urlencode data for CURLOPT_POSTFIELDS in PHP?

Posted on 2009-04-14
2
2,454 Views
Last Modified: 2012-05-06
Hi,

1) Just wondering if we're supposed to be urlencoding the data before submitting via CURLOPT_POSTFIELDS in PHP?

2) And am I supposed to use CURLOPT_COOKIEJAR option when I've already successfully logged in.

I'm having trouble posting. I can login successfully but I can't seem to post. Any ideas?
$postdata["pass"] = $pass;

        $postdata["id"] = $id;

        $postfields = generate_postfields($postdata);

        curl_setopt($ch, CURLOPT_URL, $url);

        //curl_setopt($ch, CURLOPT_REFERER, $referer);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

        curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // fake to be Internet Explorer 6.0

        //curl_setopt($ch, CURLOPT_COOKIEJAR, "/home/discoup9/public_html/curl/cookieFileName.txt");

        curl_setopt($ch, CURLOPT_COOKIEFILE, "/home/discoup9/public_html/curl/cookieFileName.txt");

        curl_setopt($ch, CURLOPT_POST, 1 );

        curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);

        $result = curl_exec($ch);

        curl_close($ch);

Open in new window

0
Comment
Question by:Victor Kimura
2 Comments
 
LVL 5

Accepted Solution

by:
palanee83 earned 500 total points
Comment Utility
HI,

Answer #1

You can either use array or a string to send the post data ($postfields).  If this $postfields is a query string then you should encode the url using urlencode() function. If its an array then its not required.


Answer #2

I used to set  CURLOPT_COOKIEFILE as well as CURLOPT_COOKIEJAR to maintain session between the pages. The cookie file path should be absolute, it may not work if the path is relative.


Also i got the below information (just i copied and pasted here)  from php.net  User contribution note.  Please give a try if above step not fix ur issue. (http://in.php.net/curl_setopt)

Sometimes you can't use CURLOPT_COOKIEJAR and CURLOPT_COOKIEFILE becoz of the server php-settings(They say u may grab any files from server using these options). Here is the solution
1)Don't use CURLOPT_FOLLOWLOCATION
2)Use curl_setopt($ch, CURLOPT_HEADER, 1)
3)Grab from the header cookies like this:
preg_match_all('|Set-Cookie: (.*);|U', $content, $results);  
$cookies = implode(';', $results[1]);
4)Set them using curl_setopt($ch, CURLOPT_COOKIE,  $cookies);
0
 

Author Closing Comment

by:Victor Kimura
Comment Utility
Hi palanee83,
Thanks for the info.
0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

Suggested Solutions

Foreword (July, 2015) Since I first wrote this article, years ago, a great many more people have begun using the internet.  They are coming online from every part of the globe, learning, reading, shopping and spending money at an ever-increasing ra…
This article discusses four methods for overlaying images in a container on a web page
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now