Перейти к содержимому



Графический таймер обратного отсчета на PHP не работает

#1

Поделиться сообщением #1



Daffy

Daffy
  • Пользователь
  • 26 сообщений
  • Репутация: 1
0

Отправлено 06 Ноябрь 2017 - 18:20

Здравствуйте! 

 

На сайте автора скрипта, сам скрипт работает корректно, а у меня не отображает числа, пробовал на разных хостингах.

 

ниже пример работы скрипта:

 

date-31-12-2017.jpg

 

Код самого скрипта

<?php
	date_default_timezone_set('Europe/Moscow');
	//header('refresh:1;url='.$_SERVER['HTTP REFERER']);
	header("Content-type: text/html; charset=utf-8");
	// Запрет кэширования
	header('Expires: Mon, 11 Jul 1991 03:00:00 GMT');
	header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
	header('Cache-Control: no-cache, must-revalidate');
	header('Pragma: no-cache');
	error_reporting(0);
 
	$image = isset($_GET['image']) ? stripslashes(strip_tags($_GET['image'])) : '';
 
	// установка отсчета на конкретный период времени
	if ($image == 'seodor-sale') { // http://www.sanchez.com.ua/images/timer/seodor-sale.jpg
		$start = $image.'.txt';
		if (!file_exists($start)) {
			$fp = fopen ($start,"w");
			fwrite($fp, time());
			fclose ($fp);
		}	
		$filemtime = filemtime($start) +60*60*24*7;// 7 дней
	}
	else if (preg_match("~^date[\-|_]([0-9]{1,2})[\-|_]([0-9]{1,2})[\-|_]([0-9]{4})(?:_([0-9]{1,2})[\-|_]([0-9]{1,2}))?$~", $image, $m)) {
	$h = $m[4] ? $m[4] : 0;
	$mi = $m[5] ? $m[5] : 0;
		$filemtime = mktime($h,$mi, 0, $m[2], $m[1], $m[3]);
	} else $image = '';
 
	if (empty($image)) die;
 
	function declOfNum($number, $titles) { // функция склонения
		$cases = array(2, 0, 1, 1, 1, 2);
		return sprintf($titles[($number%100>4 && $number%100<20)? 2 : $cases[min($number%10, 5)] ], $number);
	}
 
	if ($filemtime <= time()) {
		$days = '00'; $hours = '00'; $min = '00'; $sec = '00';
	}
	else {
		$s = $filemtime - time();
		$hour = floor($s/3600);
		$mins = floor($s/60);
 
		$days = floor($s/86400);
		$hours = floor($s/3600 - $days*24);
		$min = floor($s/60 - $hour*60); 
		$sec = floor($s - $mins*60); 
 
		if ($days<10) $days = '0'.$days;
		if ($hours<10) $hours = '0'.$hours;
		if ($min<10) $min = '0'.$min;
		if ($sec<10) $sec = '0'.$sec;
	}	
 
	$im = imagecreatefromjpeg('bg.jpg');
	$timecolor = imagecolorallocate($im, 255, 255, 255);
	$textcolor = imagecolorallocate($im, 33, 33, 33);
 
	$font = 'digital.ttf';
	$fonttext = 'verdana.ttf';
 
	imagettftext($im, 40, 0, 78, 64, $timecolor, $font, $days);
	imagettftext($im, 20, 0, declOfNum($days, array(71, 78, 69)), 98, $textcolor, $fonttext, declOfNum($days, array("день", "дня", "дней")));
 
	imagettftext($im, 40, 0, 168, 64, $timecolor, $font, $hours);
	imagettftext($im, 18, 0, declOfNum($hours, array(171, 164, 158)), 96, $textcolor, $fonttext, declOfNum($hours, array("час", "часа", "часов")));
 
	imagettftext($im, 40, 0, 257, 64, $timecolor, $font, $min);
	imagettftext($im, 14, 0, declOfNum($min, array(247, 245, 252)), 94, $textcolor, $fonttext, declOfNum($min, array("минуту", "минуты", "минут")));
 
	imagettftext($im, 40, 0, 346, 64, $timecolor, $font, $sec);
	imagettftext($im, 12, 0, declOfNum($sec, array(338, 337, 341)), 92, $textcolor, $fonttext, declOfNum($sec, array("секунду", "секунды", "секунд")));
 
	header('Content-type: image/jpg');
	imageJpeg($im, null, 85);
	imagedestroy($im);
	die;
 
?>

и архив с ним прикреплен к теме. Может кто разберется в чём проблема.

 

Прикрепленные файлы

  • Прикрепленный файл  timer.zip   127,82К   Количество загрузок: 3

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Таймер на javascript для определенного действия
  2. Обратный отсчёт времени(графический)
  3. Обратный счетчик на JavaScript
  4. Счетчик обратного отсчета, который формируется для каждого отдельно.
  5. Таймер обратного отчета

#2

Поделиться сообщением #2



Daffy

Daffy
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 1

Отправлено 09 Ноябрь 2017 - 00:10

Эхх, никто так и не посмотрел в чём проблема  :(


  • 0

#3

Поделиться сообщением #3



Ixman

Ixman
  • Пользователь PRO
  • 2 671 сообщений
  • Репутация: 641

Отправлено 09 Ноябрь 2017 - 12:44

@Daffy, завтра буду дома, то гляну. Главное не забыть
  • 0


#4

Поделиться сообщением #4



Daffy

Daffy
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 1

Отправлено 09 Ноябрь 2017 - 12:57

@Ixman:D  хорошо, спасибо


  • 0

#5

Поделиться сообщением #5



Ixman

Ixman
  • Пользователь PRO
  • 2 671 сообщений
  • Репутация: 641

Отправлено 10 Ноябрь 2017 - 20:12

@Daffy, всё работает, но есть маленькая хитрость.

 

Допустим скрипт будет лежать в директории /timer/ значит ссылка на  таймер будет

http://domen.ru/timer/seodor-sale.jpg

ещё если будут всё же трудности, нужно на директорию таймера выставить права 777.

 

И как я понял это таймер на неделю что ли, то есть он показывает отсчёт на 7 дней


Сообщение отредактировал Ixman: 10 Ноябрь 2017 - 20:13

  • 0


#6

Поделиться сообщением #6



Daffy

Daffy
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 1

Отправлено 10 Ноябрь 2017 - 20:34

так, сейчас попробуем, но всё это вроде делал, семь дней, это если seodor-sale.jpg , если указать дату date-31-12-2017.jpg вот в таком виде, до будет отсчет по ней

@Ixman, вот закинул всю папку и даже 777 поставил, но не работает 

http://tegdiw.ru/timer/date-31-12-2017.jpg
 http://tegdiw.ru/timer/seodor-sale.jpg

  • 0

#7

Поделиться сообщением #7



Ixman

Ixman
  • Пользователь PRO
  • 2 671 сообщений
  • Репутация: 641

Отправлено 10 Ноябрь 2017 - 20:44

@Daffy, там в скрипте заблокирован показ ошибок, нужно его убрать. Закомментируйте строку error_reporting(0); или уберите её на время вообще. Я хочу посмотреть что покажет скрипт. Да и надо чтобы сервер или хостинг не гасил показ ошибок. В общем вместо error_reporting(0) впишите error_reporting(E_ALL);


  • 0


#8

Поделиться сообщением #8



Daffy

Daffy
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 1

Отправлено 10 Ноябрь 2017 - 20:49

error_reporting(E_ALL);

куча всякого вылезло 

а убрав эту строку, то же самое, что и с ней, нет цифр 


Сообщение отредактировал Daffy: 10 Ноябрь 2017 - 20:54

  • 0

#9

Поделиться сообщением #9



Daffy

Daffy
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 1

Отправлено 10 Ноябрь 2017 - 21:05

эх, да что же не так, установил на php7+nginx , как автор ответил и даже настройки написал, то же самое, цифр нет

не может же быть, на двух разных хостингах, такая ерунда. 


Сообщение отредактировал Daffy: 10 Ноябрь 2017 - 21:07

  • 0

#10

Поделиться сообщением #10



Ixman

Ixman
  • Пользователь PRO
  • 2 671 сообщений
  • Репутация: 641

Отправлено 10 Ноябрь 2017 - 21:07

@Daffy, сейчас показ ошибок выключен?


  • 0


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru