PHP curl post to login to wordpress
- by Sadi
I followed http://stackoverflow.com/questions/724107 to login to wordpress, using php_curl, and it works fine as far I use WAMP, (apache/php).
But when it comes to IIS on the dedicated server, it returns nothing.
I have wrote the following function which is working fine on my local wamp, but when deployed to client's dedicated windows server 2k3, it doesn't. Please help me
function post_url($url, array $query_string)
{
//$url = http://myhost.com/wptc/sys/wp/wp-login.php
/* $query_string = array(
'log'=>'admin',
'pwd'=>'test',
'redirect_to'=>'http://google.com',
'wp-submit'=>'Log%20In',
'testcookie'=>1
);
*/
//temp_dir is defined as folder = path/to/a/folder
$cookie= temp_dir."cookie.txt";
$c = curl_init($url);
if (count($query_string))
{
curl_setopt ($c, CURLOPT_POSTFIELDS,
http_build_query( $query_string )
);
}
curl_setopt($c, CURLOPT_POST, 1);
curl_setopt($c, CURLOPT_COOKIEFILE, $cookie);
//curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 1);
//curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt($c, CURLOPT_TIMEOUT, 60);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); //return the content
curl_setopt($c, CURLOPT_COOKIEJAR, $cookie);
//curl_setopt($c, CURLOPT_AUTOREFERER, 1);
//curl_setopt($c, CURLOPT_REFERER, wp_admin_url);
//curl_setopt($c, CURLOPT_MAXREDIRS, 10);
curl_setopt($c, CURLOPT_HEADER, 0);
//curl_setopt($c, CURLOPT_CRLF, 1);
try {
$result = curl_exec($c);
}
catch (Exception $e)
{
$result = 'error';
}
curl_close ($c);
return $result; //it return nothing (empty)
}
Other Facts
curl_error($c); return nothing
when header CURLOPT_HEADER is set to ON,
it return this header
HTTP/1.1 200
OK Cache-Control: no-cache,
must-revalidate, max-age=0 Pragma:
no-cache Content-Type: text/html;
charset=UTF-8 Expires: Wed, 11 Jan
1984 05:00:00 GMT Last-Modified:
Thu, 06 May 2010 21:06:30 GMT
Server: Microsoft-IIS/7.0
X-Powered-By: PHP/5.2.13 Set-Cookie:
wordpress_test_cookie=WP+Cookie+check;
path=/wptc/sys/wp/ Set-Cookie:
wordpress_b13661ceb5c3eba8b42d383be885d372=admin%7C1273352790%7C7d8ddfb6b1c0875c37c1805ab98f1e7b;
path=/wptc/sys/wp/wp-content/plugins;
httponly Set-Cookie: wordpress_b13661ceb5c3eba8b42d383be885d372=admin%7C1273352790%7C7d8ddfb6b1c0875c37c1805ab98f1e7b;
path=/wptc/sys/wp/wp-admin; httponly
Set-Cookie:
wordpress_logged_in_b13661ceb5c3eba8b42d383be885d372=admin%7C1273352790%7Cb90825fb4a7d5da9b5dc4d99b4e06049;
path=/wptc/sys/wp/; httponly
Refresh:
0;url=http://myhost.com/wptc/sys/wp/wp-admin/
X-Powered-By: ASP.NET Date: Thu, 06
May 2010 21:06:30 GMT
Content-Length: 0
CURL version info:
Array ( [version_number] = 463872 [age] = 3 [features] = 2717 [ssl_version_number] = 0 [version] = 7.20.0 [host] = i386-pc-win32 [ssl_version] = OpenSSL/0.9.8k [libz_version] = 1.2.3 [protocols] = Array ( [0] = dict [1] = file [2] = ftp [3] = ftps [4] = http [5] = https [6] = imap [7] = imaps [8] = ldap [9] = pop3 [10] = pop3s [11] = rtsp [12] = smtp [13] = smtps [14] = telnet [15] = tftp ) )
PHP Version 5.2.13
Windows Server 2K3
IIS 7
Working fine on Apache, PHP 3.0 on my localhost (windows)