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

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

18.01.2013, 01:22. Показов 3860. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru