Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
 Аватар для danya24rus
2 / 2 / 0
Регистрация: 18.01.2013
Сообщений: 81

Таймер обратного отсчета с перенаправлением на другой сайт(нужно, чтобы открывался в новой вкладке)

18.01.2013, 01:22. Показов 3888. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Хочу сделать веб страничку, где бы меня перенаправляли на браузерные игры по истечение какого-то времени. Дело в том, что код работает и перенаправляет, но на этой же вкладке, суть в том, что таких счетчиков будет много, и если какой-то один таймер меня отправит на одну страничку, то другой уже не сможет этого сделать. Так же хотелось бы сделать кнопку "сброса". Т.е чтобы время прибавлялось на какое-то количество. Для этого есть наработки, так что пока на этом внимания не заостряю. В общем нужно, чтобы сайт открылся в новой вкладке. есть вот такой код:
Index.html
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<html>
<head>
<title>Зайти в игру через </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
<!--
#cd {
    margin: auto;
    height: 50px;
    width: 450px;
    font-family: "Courier New", Courier, mono;
    font-size: 24pt;
    color: #000;
    text-align: center;
    font-weight: bold;
    background-image: url(back.jpg);
    vertical-align: middle;
}
-->
</style>
</head>
 
<body>
<h1 align="center"> До ЧАСА X осталось  </h1>
<SCRIPT language="JavaScript" SRC="countdown.php?timezone=Asia/Krasnoyarsk&countto=2013-01-17 21:28:00&do=r&data=http://mygame.com"></SCRIPT>
 
<p>&nbsp;</p>
<a></a>
</body>
</html>
countdown.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<?php
 
 
header('Content-Type: text/javascript'); 
 
// Определение времени в вашем регионе(задаётся в index.html файле)
$timezone = trim($_GET['timezone']);
putenv("TZ=$timezone");
 
$countdown_to = trim($_GET['countto']); // 24-Hour Format: YYYY-MM-DD HH:MM:SS"
 
$count_from = date("Y-m-d H:i:s"); // current time -- NO NEED TO CHANGE
function datediff($interval, $datefrom, $dateto, $using_timestamps = false) {
  /*
    $interval can be:
    yyyy - Number of full years
    q - Number of full quarters
    m - Number of full months
    y - Difference between day numbers
      (eg 1st Jan 2004 is "1", the first day. 2nd Feb 2003 is "33". The datediff is "-32".)
    d - Number of full days
    w - Number of full weekdays
    ww - Number of full weeks
    h - Number of full hours
    n - Number of full minutes
    s - Number of full seconds (default)
  */
  
  if (!$using_timestamps) {
    $datefrom = strtotime($datefrom, 0);
    $dateto = strtotime($dateto, 0);
  }
  $difference = $dateto - $datefrom; // Difference in seconds
   
  switch($interval) {
   
    case 'yyyy': // Number of full years
 
      $years_difference = floor($difference / 31536000);
      if (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom), date("j", $datefrom), date("Y", $datefrom)+$years_difference) > $dateto) {
        $years_difference--;
      }
      if (mktime(date("H", $dateto), date("i", $dateto), date("s", $dateto), date("n", $dateto), date("j", $dateto), date("Y", $dateto)-($years_difference+1)) > $datefrom) {
        $years_difference++;
      }
      $datediff = $years_difference;
      break;
 
    case "q": // Number of full quarters
 
      $quarters_difference = floor($difference / 8035200);
      while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($quarters_difference*3), date("j", $dateto), date("Y", $datefrom)) < $dateto) {
        $months_difference++;
      }
      $quarters_difference--;
      $datediff = $quarters_difference;
      break;
 
    case "m": // Number of full months
 
      $months_difference = floor($difference / 2678400);
      while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($months_difference), date("j", $dateto), date("Y", $datefrom)) < $dateto) {
        $months_difference++;
      }
      $months_difference--;
      $datediff = $months_difference;
      break;
 
    case 'y': // Difference between day numbers
 
      $datediff = date("z", $dateto) - date("z", $datefrom);
      break;
 
    case "d": // Number of full days
 
      $datediff = floor($difference / 86400);
      break;
 
    case "w": // Number of full weekdays
 
      $days_difference = floor($difference / 86400);
      $weeks_difference = floor($days_difference / 7); // Complete weeks
      $first_day = date("w", $datefrom);
      $days_remainder = floor($days_difference % 7);
      $odd_days = $first_day + $days_remainder; // Do we have a Saturday or Sunday in the remainder?
      if ($odd_days > 7) { // Sunday
        $days_remainder--;
      }
      if ($odd_days > 6) { // Saturday
        $days_remainder--;
      }
      $datediff = ($weeks_difference * 5) + $days_remainder;
      break;
 
    case "ww": // Number of full weeks
 
      $datediff = floor($difference / 604800);
      break;
 
    case "h": // Number of full hours
 
      $datediff = floor($difference / 3600);
      break;
 
    case "n": // Number of full minutes
 
      $datediff = floor($difference / 60);
      break;
 
    default: // Number of full seconds (default)
 
      $datediff = $difference;
      break;
  }    
 
  return $datediff;
}
 
// getting Date difference in SECONDS
$diff = datediff("s", $count_from, $countdown_to);
?>
 
// Here’s where the Javascript starts
countdown = <?=$diff?>;
 
// Converting date difference from seconds to actual time
function convert_to_time(secs)
{
    secs = parseInt(secs);  
    hh = secs / 3600;   
    hh = parseInt(hh);  
    mmt = secs - (hh * 3600);   
    mm = mmt / 60;  
    mm = parseInt(mm);  
    ss = mmt - (mm * 60);   
        
    if (hh > 23)    
    {   
       dd = hh / 24;    
       dd = parseInt(dd);   
       hh = hh - (dd * 24); 
    } else { dd = 0; }  
        
    if (ss < 10) { ss = "0"+ss; }   
    if (mm < 10) { mm = "0"+mm; }   
    if (hh < 10) { hh = "0"+hh; }   
    if (dd == 0) { return (hh+":"+mm+":"+ss); } 
    else {  
        if (dd > 1) { return (dd+" дней "+hh+":"+mm+":"+ss); }
        else { return (dd+" день "+hh+":"+mm+":"+ss); }
    }   
}
 
// Our function that will do the actual countdown
function do_cd()
{
    if (countdown < 0)  
    {   
        <?php
            if(strtolower(trim($_GET['do'])) == 'r' )
            {
        ?>
        // redirect web page
        document.location.href = "<?=$_GET['data']?>", target="_blank" ;
        <?php } ?>
 
        <?php
            if(strtolower(trim($_GET['do'])) == 't' )
            {
        ?>
        // change text
                document.getElementById('cd').innerHTML = "<?=$_GET['data']?>";
        <?php } ?>
 
    }   
    else    
    {   
        document.getElementById('cd').innerHTML = convert_to_time(countdown);
        setTimeout('do_cd()', 1000);
    }   
    countdown = countdown - 1;  
}
 
document.write("<div id='cd'></div>\n");
 
do_cd();
 
<? exit(); ?>
Пытался подключить jquery, чтобы все ссылки открываливь в новом окне, но как я понимаю - это не ссылка, и события никакого не происходит(типо нажатия мышки или клавиши и.т.п) поэтому он не подходит.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.01.2013, 01:22
Ответы с готовыми решениями:

Нужно сделать таймер обратного отсчета
Нужно сделать таймер обратного отсчета

Таймер обратного отсчета
Здравствуйте всем, с помощью добрых людей на этом форуме которые мне помогли, вышел код таймера обратного отсчета! все прекрасно...

Таймер обратного отсчета
Перерыл все, ничего не нашел, чтобы работало внутри PHP кода. Сам в яваскрипте не шарю, прошу помочь написать таймер отсчета с 15 до 0....

5
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
18.01.2013, 01:44
у тега a есть аттрибут при наличии которого ссылка открывается в новом окне
HTML5
1
<a href="/" target="_blank">перейти</a>
1
 Аватар для danya24rus
2 / 2 / 0
Регистрация: 18.01.2013
Сообщений: 81
18.01.2013, 02:42  [ТС]
Так это же, как я понял, не ссылка, поэтому как бы не пытался подставить target="_blank" в код - он просто не работает.

Добавлено через 10 минут
Я так понимаю, что дело в этой строчке
PHP
1
 document.location.href = "<?=$_GET['data']?>", target="_blank" ;
Но как бы я ни ставил - top.location.href , window.location.href - исход один и тот же.

Добавлено через 34 минуты
В общем, я так и не понял, как сделать так, чтобы перенаправление(не нажатие на ссылку) было именно в новом окне, в данный момент открытие происходит в этом же окне.
Не обязательно делать это в js.
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
18.01.2013, 02:50
вы пробовали вставить в файл тот код который я написал в предыдущем сообщении?
это был переход в новое окно при помощи html, вот открытие нового окна при помощи javascript
JavaScript
1
window.open('http://cyberforum.ru')
1
 Аватар для danya24rus
2 / 2 / 0
Регистрация: 18.01.2013
Сообщений: 81
18.01.2013, 03:01  [ТС]
Пробовал, не получается
Вроде пробовал windows.open, может в синтаксисе что-то не правильно сделал, но не получалось.
Попробовал так, как вы написали и все заработало -
Вместо
PHP
1
document.location.href = "<?=$_GET['data']?>";
вставил
PHP
1
window.open('<?=$_GET['data']?>')
Большое вам спасибо
А можно будет задать вопрос по кнопке "сброса", которую выше описывал, если не будет получаться?
В задумке это будет так:
вот это значение "timezone=Asia/Krasnoyarsk&countto=2013-01-17 21:28:00" которое мы вписываем вручную в html файл будет браться из txt или xml файла(не знаю как правильней) и при нажатии на кнопку "сбросить" будет заменяться это значение в файле(txt иди xml) на определенное количество часов(например +24)
Надеюсь поймете, что я имею ввиду, как-то плохо получается объяснять
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
18.01.2013, 03:09
Цитата Сообщение от danya24rus Посмотреть сообщение
Надеюсь поймете, что я имею ввиду, как-то плохо получается объяснять
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2013, 03:09
Помогаю со студенческими работами здесь

Таймер обратного отсчета
Здравствуйте! Помогите написать код программы таймера обратного отсчета в формате: мин:сек:милсек - отображаются в текстбоксе, две кнопки...

Таймер обратного отсчета
Здравствуйте друзья! Подскажите пожалуйста, в чем проблема. Есть небольшой скрипт, который считает секунды от десяти до нуля. Мне нужно,...

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

Таймер обратного отсчета
У меня проблема, хочу создать таймер обратного отсчета, лично у меня все получилось, создаю таймер не по заданному таймингу, а через базу...

Таймер обратного отсчета на JS
Добрый день! Хочу сделать таймер обратного отсчета. Время выбирается из select. Написал такой код, но он не работает, подскажите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru