в хеадерах исправте гиф на пнг.
вот хороший класс календаря
Функция автоочистки папки через определенное время
$dir = 'cache/'; //папка, которую чистим
$cleanTime = '24'; //период очистки в часах
function clearDirRec ($dir, $cleanTime)
{
while($file = array_diff(scandir($dir), array('.', '..', '.htaccess'))) { //читаем папку
if(is_dir($dir . $file)) { //если полученый результат - папка, то рекурсивно чистим и ее
clearDirRec($dir . $file); //то рекурсивно чистим и ее
rmdir($dir . $file); //удаляем папку
}
else {
unlink($dir . $file); //удаляем файл
}
}
}
if(file_exists($dir . 'lastclean.dat') && @filemtime($dir . 'lastclean.dat') < (time() - $cleanTime * 3600)) {
clearDirRec($dir);
}
else {
file_put_contents($dir . 'lastclean.dat', 1);
}
// Нужно было получить PR сайтов, вот сварганил быдлокодерскую функцию
// если нужно получить только цифру, то в пишем так
// return $a[1].$a[2];
// в формальную переменную $url передовать название сайте, без http://
function getPR($url){
$url = 'http://pr-cy.ru/analysis/'.$url;
if($fp = file_get_contents($url)){
preg_match('/<b>([0-9]){1}([0]){0,1}\/([0-9]){1}([0]){0,1}<\/b>/si', $fp, $a);
return $a[1].$a[2].'/'.$a[3].$a[4];
}else{
return 0;
}
}
// Эту функцию писал не я, просто уже давно пользуюсь, она в дагонку предыдущей
// Определяет CY сайта
function getCI($url){
$ci_url = "http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://".$url."/";
$ci_data = implode("", file("$ci_url"));
preg_match("/value=\"(.\d*)\"/", $ci_data, $ci);
if (empty($ci[1]))
return 0;
else
return $ci[1];
}
откопал в просторах интернета.
Преобразование картинки в текст.
echo '<style>
div#picture span {
display: block;
float: left;
width: 5px;
height: 5px;
}
</style>';
$file = "pic.png";
$mSize = 100;
$im = imagecreatefrompng($file);
list($x, $y) = getimagesize($file);
$ratio = $x/$y;
if ($x > $y)
{
$nx = $mSize;
$ny = round($mSize / $ratio);
}
else
{
$ratio = 1/$ratio;
$ny = $mSize;
$nx = round($mSize / $ratio);
}
$message = '<div id="picture">';
$ni = imagecreatetruecolor($nx, $ny);
imagecopyresampled($ni, $im, 0, 0, 0, 0, $nx, $ny, $x, $y);
for($h = 0; $h < $ny; $h++)
{
$message .= '<div style="clear:both"></div>';
for($w = 0; $w < ceil($nx); $w++)
{
$rgb = imagecolorat($ni, $w, $h);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$message .= sprintf('<span style="color: rgb(%d, %d, %d)">*</span>', $r, $g, $b);
}
}
$message .= '</div>';
echo $message;
ну раз такой спрос...
echo file_get_contents('http://youre-site.ru/pr.php?site=johncms.com');
результат возвращает в xml формате
<site>johncms.com</site>
<cy>150</cy>
<yapang>4</yarang>
<pr>4</pr>
<lastupdate>1341691530</lastupdate>
<error></error>
_______________
Простое определение ТИЦ и PR сайта/сайтов.
С кешированием и ограничением на запросы разных сайтов.
Вы сами указываете для каких сайтов можно запрашивать данные.
(просто укажите домен сайта в файле tmp/pr/access.txt с новой строки)
http://tfile.info/file/254/ пароль: smartoff
Перхватываем ошибки в свои руки.
<?php
ini_set('display_errors', FALSE);
error_reporting(-1);
// Обработчик неперехваченных исключений
set_exception_handler('exceptionHandler');
// Устанавливаем пользовательский обработчик ошибок
// Все что находится выше будет обрабатываться стандартным обработчиком
set_error_handler('errorHandler', -1);
// Пытаемся поймать фатальную ошибку
register_shutdown_function('getLastError');
function getLastError()
{
$error = error_get_last();
$error = new ErrorException($error['message'], $error['type'], 0, $error['file'], $error['line']);
echo exceptionHandler($error);
}
function exceptionHandler($exception) {
echo '<pre><h1>Exception</h1><b>Message:</b> ' . $exception->getMessage() .
'<br /><b>Code:</b> ' . detectErrorCode($exception->getCode()) .
'<br /><b>File:</b> ' . $exception->getFile() .
'<br /><b>Line:</b> ' . $exception->getLine() .
'<br /><b>Trace:</b><br />' . $exception->getTraceAsString() . '</pre>';
}
function detectErrorCode($code)
{
switch($code)
{
case E_ERROR: // 1
return 'E_ERROR';
case E_WARNING: // 2
return 'E_WARNING';
case E_PARSE: // 4
return 'E_PARSE';
case E_NOTICE: // 8
return 'E_NOTICE';
case E_CORE_ERROR: // 16
return 'E_CORE_ERROR';
case E_CORE_WARNING: // 32
return 'E_CORE_WARNING';
case E_CORE_ERROR: // 64
return 'E_COMPILE_ERROR';
case E_CORE_WARNING: // 128
return 'E_COMPILE_WARNING';
case E_USER_ERROR: // 256
return 'E_USER_ERROR';
case E_USER_WARNING: // 512
return 'E_USER_WARNING';
case E_USER_NOTICE: // 1024
return 'E_USER_NOTICE';
case E_STRICT: // 2048
return 'E_STRICT';
case E_RECOVERABLE_ERROR: // 4096
return 'E_RECOVERABLE_ERROR';
case E_DEPRECATED: // 8192
return 'E_DEPRECATED';
case E_USER_DEPRECATED: // 16384
return 'E_USER_DEPRECATED';
default:
return $code;
}
}
// Ошибки следующих типов не могут быть обработаны пользователем:
// E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING,
// и большинство E_STRICT ошибок, произошедших в файле, где вызвана функция set_error_handler().
function errorHandler($severity, $message, $filename = NULL, $line = NULL) {
if (error_reporting() && $severity) {
throw new ErrorException($message, $severity, 0, $filename, $line);
}
return FALSE;
}
// Небольшой тест
$error = isset($_GET['error']) ? $_GET['error'] : '';
echo ($error == 'e_error' ? 'e_error' : '<a href="?error=e_error">e_error</a>') .
'<br />' .
($error == 'e_notice' ? 'e_notice' : '<a href="?error=e_notice">e_notice</a>') .
'<br />' .
($error == 'e_warning' ? 'e_warning' : '<a href="?error=e_warning">e_warning</a>') .
'<br />' .
($error == 'e_deprecated' ? 'e_deprecated' : '<a href="?error=e_deprecated">e_deprecated</a>') .
'<br />' .
(empty($error) ? 'No error' : '<a href="?">No error</a>');
switch ($error)
{
case 'e_error'://Fatal Error
undefined_function();
break;
case 'e_notice':
$_GET['undefined'];
break;
case 'e_warning':
strpos();
break;
case 'e_deprecated':
eregi('', '');
break;
default:
}
Создание превьюшек для изображений
define('FILESDIR', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR);
if (!empty($_POST) && !empty($_FILES))
{
$error = array();
$extensions = array('png', 'jpg', 'jpeg', 'gif');
$fname = $_FILES['file']['name'];
$fname_ext = explode('.', $fname);
/* Проверка расширения */
if (count($fname_ext) != 2)
{
$error[] = 'file must have one extension';
}
else
{
$ext = $fname_ext[1];
}
if (!in_array($ext, $extensions))
{
$error[] = lng('err_file_ext_2') . ' ' . implode(', ', $extensions);
}
$fname = strtolower($fname);
if (preg_match("/[^\da-z_\-.]+/", $fname))
{
$error[] = 'file name must have only the next symbols: a-z, 0-9, _-.';
}
$fname = FILESDIR . $fname_ext[0] . '.' . $ext;
/* Проверка файла на существование */
if (file_exists($fname))
{
$fname_ext[0] .= '_' . time();
$fname = FILESDIR . $fname_ext[0] . '.' . $ext;
}
if (empty($error))
{
/* Загружаем файл */
if (copy($_FILES['file']['tmp_name'], $fname) === TRUE)
{
/* Создаем превью для изображения */
if (extension_loaded('gd'))
{
$imageSize = getimagesize($fname);
$types = array(1 => 'gif', 2=> 'jpg', 3 => 'png');
$imageType = array_key_exists($imageSize[2], $types) ? $types[$imageSize[2]] : FALSE;
if ($imageType !== FALSE)
{
$width = $imageSize[0];
$height = $imageSize[1];
if ($width > 220 || $height > 176)
{
switch ($imageType)
{
case 'gif':
$image = imagecreatefromgif($fname);
break;
case 'jpg':
$image = imagecreatefromjpeg($fname);
break;
case 'png':
$image = imagecreatefrompng($fname);
break;
default:
}
$max = $width > $height ? 'w' : 'h';
$new_width = 176;
$new_height = 220;
if ($max == 'w' && $width > $new_width)
{
$new_height = intval(($new_width * $height) / $width);
}
if ($max == 'h' && $height > $new_height)
{
$new_width = intval(($new_height * $width) / $height);
}
$preview = imagecreate($new_width, $new_height);
imagecopyresized($preview, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagepng($preview, FILESDIR . $fname_ext[0] . '_preview.png');
var_dump($width, $height, $new_width, $new_height);
}
}
}
$_SESSION['libFiles'] += 1;
$_SESSION['files'][$fname_ext[0] . '.' . $ext] = $_FILES['file']['type'];
echo '<div class="gmenu">File uploaded. <a href="index.php">Repeat</a></div>';
}
else
{
$error[] = 'Unable to load file';
}
}
}
else
{
echo '<form action="index.php" method="post" enctype="multipart/form-data">' .
'Choose file:<br /><input type="file" name="file" />' .
'<input type="submit" name="submit" value="Upload" /></form>' .
'<p><a href="?show">Show uploaded images</a></p>';
}
if (isset($_GET['show']))
{
$dir = scandir(FILESDIR);
unset($dir[0], $dir[1]);
foreach ($dir as $img)
{
echo '<hr />' . $img . '<br /><img src="./img/' . $img . '" alt="" /><hr />';
}
}
if (!empty($error))
{
echo implode('<br />', $error) . '<br /><a href="index.php">Continue</a>';
}