cURL ничего не возвращает, когда на сервере. Все работает хорошо на локальном хосте, но когда он находится в удаленном хостинге, getSearchResults() ничего не возвращает (или заголовок 302). Это что-то не так с конфигурацией сервера (попробовал 2 разных). Это может быть что-то с CURLOPT_FOLLOWLOCATION? Пробовал и true, и false на localhost - все еще работает. На удаленном хостинге по какой-то причине не разрешается следить за местоположением, но если это работает без локального, я не думаю, что это имеет значение.cURL ничего не возвращает
<?php
class cURL
{
private $username;
private $password;
private static $tmpfname;
public function __construct($username,$password) {
$this->username = $username;
$this->password = $password;
$this->makeCookies($username, $password);
}
private function makeCookies($username, $password) {
self::$tmpfname = tempnam("/tmp", "Cookie");
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEFILE, self::$tmpfname);
curl_setopt($ch, CURLOPT_COOKIEJAR, self::$tmpfname);
curl_setopt($ch, CURLOPT_URL,"http://vk.com/login.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "email={$username}&pass={$password}");
ob_start();
curl_exec($ch);
ob_end_clean();
curl_close($ch);
unset($ch);
}
private function getHTML($url){
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEFILE, self::$tmpfname);
curl_setopt($ch, CURLOPT_COOKIEJAR, self::$tmpfname);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
$contents = curl_exec($ch);
curl_close($ch);
return $contents;
}
public function getSearchResults($songname) {
$songname = urlencode($songname);
$contents = $this->getHTML("http://vk.com/search?c[section]=audio&c[q]={$songname}");
return $contents;
}
}
?>
Я никогда не слышал, чтобы определенная опция cURL была отключена на хостинге. Обратитесь к своему хосту или коммутатору. – ceejayoz
@ceejayoz не отключена опция завивки, 'FOLLOWLOCATION' отключается, если PHP работает в безопасном режиме. – Ranty
@heroix Дружелюбное напоминание! Пожалуйста, используйте защищенный, а не частный. Это позволяет проводить расширяемость и модульные тесты позже и считается хорошей практикой. –