\"http://domain.com\",
\"loginCheck\" => \"checkuser.php\",
\"userAgent\"
Two of your variables are named badly:
curl_setopt($ch, CURLOPT_USERAGENT, config['userAgent']);
curl_setopt($ch, CURLOPT_REFERER, config['siteURL']);
Should be:
curl_setopt($ch, CURLOPT_USERAGENT, $config['userAgent']);
curl_setopt($ch, CURLOPT_REFERER, $config['siteURL']);
My guess is that PHP faulted to a blank page (since the variable is seen as a constant but constants must be scalar).
Another issue may be the user agent. I've seen servers that completely refuse to reply if no user agent was set.
You can use a class that I wrote that wraps around CURL. To install, see: https://github.com/homer6/altumo
It's much easier to use and can give you some easy to access debugging. For example:
try{
//load class autoloader
require_once( __DIR__ . '/loader.php' ); //you should ensure that is is the correct path for this file
//make the response; return the response with the headers
$client = new \Altumo\Http\OutgoingHttpRequest( 'http://www.domain.com/checkuser.php', array(
'username' => 'user',
'password' => 'pass',
'submit' => ' Login '
));
$client->setRequestMethod( \Altumo\Http\OutgoingHttpRequest::HTTP_METHOD_POST );
//send the request (with optional arguments for debugging)
//the first true will return the response headers
//the second true will turn on curl info so that it can be retrieved later
$response = $client->send( true, true );
//output the response and curl info
\Altumo\Utils\Debug::dump( $response, $client->getCurlInfo() );
//alternatively, you can get the response wrapped in an object that allows you to retrieve parts of the response
$http_response = $client->sendAndGetResponseMessage( true );
$status_code = $http_response->getStatusCode();
$message_body = $http_response->getMessageBody();
$full_http_response = $http_response->getRawHttpResponse();
\Altumo\Utils\Debug::dump( $status_code, $message_body, $full_http_response );
}catch( \Exception $e ){
//This will display an error if any exceptions have been thrown
echo 'Error: ' . $e->getMessage();
}
Hope that helps...
It does, if you set a complete URL with a '/' at the end (fix two other typos):
error_reporting(-1);
$config = array
(
"siteURL" => "http://www.apple.com/",
"loginCheck" => "checkuser.php",
"userAgent" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16"
);
$postFields = "username=user&password=pass&submit= Login ";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $config['siteURL'] . $config['loginCheck']);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $config['userAgent']);
curl_setopt($ch, CURLOPT_REFERER, $config['siteURL']);
$content = curl_exec($ch);
curl_close($ch);
echo $content;
If curl doesn't return anything then you have to check for the reason why that happen. Check for the last curl error message:
if(curl_exec($ch) === false)
{
echo 'Curl error: ' . curl_error($ch);
}
else
{
echo 'Operation completed without any errors, you have the response';
}
Basically it would be good to always check on that. You shouldn't assume that curl request succeeded.