Мини-прелоадер к сожалению в моем случае не подходит, т.к. у меня игроки с разных соц. сетей друг с другом играют.
Т.е. им нужно видеть скалированные аватары других игроков. Мини-прелоадер поможет им видеть только аватары игроков со своей сети.
Я доделал свой прокси скрипт - может кому пригодится, теперь вроде бы и с Контаком и с Одноклассниками работает:
PHP код:
<?php
define('MAX_SIZE', 1024 * 1024);
$img = $_GET['img'];
if (strpos($img, '..') !== false ||
!preg_match(',^http://[\w.-]*(vkontakte|odnoklassniki)\.ru/[\w./?&=-]+$,i', $img, $matches))
exit();
$opts = array(
'http'=>array(
'method' => 'GET',
'header' => 'Referer: http://' . $matches[1] . '.ru/'
)
);
$ctx = stream_context_create($opts);
stream_context_set_params($ctx, array('notification' => 'callback'));
$fh = fopen($img, 'r', false, $ctx);
fpassthru($fh);
fclose($fh);
function callback($code, $severity, $message, $message_code, $bytes_transferred, $bytes_total) {
if ($code == STREAM_NOTIFY_PROGRESS && $bytes_transferred > MAX_SIZE)
exit();
if ($code == STREAM_NOTIFY_FILE_SIZE_IS)
if ($bytes_total > MAX_SIZE)
exit();
else
header('Content-Length: ' . $bytes_total);
if ($code == STREAM_NOTIFY_MIME_TYPE_IS) {
$mime = strtolower($message);
switch($message) {
case 'image/gif':
case 'image/png':
case 'image/jpg':
case 'image/jpeg':
header('Content-Type: ' . $mime);
break;
default:
exit();
}
}
}
?>
|