alex.k12
10.05.2009, 23:49
Мне нужно получить картинку и вместе с ней id php-сессиии (из приходящего Set-cookie хедера) в одном запросе. Чтобы получить id сессии надо включить curl_setopt($ch, CURLOPT_HEADER, 1); , но тогда хедеры смешаются с картинкой и return $ss; не возвратит чистую картинку. Можно конечно отделить хедеры от картинки вручную, но это муторно (или нет?). Есть какой-нибудь простой способ, чтобы прочитать хедеры и вывести чистую картинку?
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,0);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
$headers[] = $ua;
$headers[] = 'Accept:image/png,image/*;q=0.8,*/*;q=0.5';
$headers[] = 'Accept-Language:ru,en-us;q=0.7,en;q=0.3';
$headers[] = 'Accept-Encoding:gzip,deflate';
$headers[] = 'Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.7';
$headers[] = 'Keep-Alive:300';
$headers[] = 'Proxy-Connection:keep-alive';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$ss=curl_exec($ch);
curl_close($ch);
$sessid=substr($ss, strpos($ss, "PHPSESSID=")+10, 26);
if ($sessid) echo "Session ID: $sessid<br>";
return $ss;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,0);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
$headers[] = $ua;
$headers[] = 'Accept:image/png,image/*;q=0.8,*/*;q=0.5';
$headers[] = 'Accept-Language:ru,en-us;q=0.7,en;q=0.3';
$headers[] = 'Accept-Encoding:gzip,deflate';
$headers[] = 'Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.7';
$headers[] = 'Keep-Alive:300';
$headers[] = 'Proxy-Connection:keep-alive';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$ss=curl_exec($ch);
curl_close($ch);
$sessid=substr($ss, strpos($ss, "PHPSESSID=")+10, 26);
if ($sessid) echo "Session ID: $sessid<br>";
return $ss;