我对代码不是很擅长,所以请在回答时使用非专业术语!!
我有广播网站,我隐藏链接,直到一天中的特定时间(即广播时间)这是我用来执行此操作的代码:
<?php
date_default_timezone_set('Europe/London');
$currtime = date('Hi');
// Change time
$starttime = 2200;
$endtime = 2300;
$endtime = $endtime + 2400;
$endtest = $currtime + 2400;
?>
<?php
if( $currtime >= $starttime && $endtest <= $endtime ){
?>
<a href="*broadcastlink*">LIVE NOW</a>
<?php
}
else{
?>
Live at 22:00
<?php
}
?>
目前用户必须手动刷新页面,这有点乱。
我知道这可以使用javascript轻松完成每x秒刷新整个页面但我不想这样做,因为我有另一段代码显示“facebook like”弹出窗口没有关闭5分钟,除非他们点击相似,所以刷新整个页面会不断显示弹出窗口。
请有人写一个脚本,以便我可以将刷新脚本链接到上面的php脚本,这样在链接显示容器刷新的时候,我环顾四周,到目前为止找不到任何合适的东西?
提前感谢您的帮助 - 非常感谢
答案 0 :(得分:3)
这是你能做的。
通过执行
确定直播开始的秒数$numOfSeconds = $starttime - $currtime;
然后一旦你知道你想在这里刷新浏览器多少秒,你就可以用php来做到这一点。
header( "refresh:$numOfSeconds;urltoanywhere.php" );
这将带您到特定时间后想要去的任何网址。如果要刷新,请将URL定义到同一页面。你可以扩展这个逻辑来实现你想要的方式。
<强> UPDATE1:强>
以下是我测试过的工作代码。希望这可以帮助你:)
<?php
ob_start();
date_default_timezone_set('Europe/London');
$currentPage = $_SERVER['PHP_SELF'];
$currentTimestamp = strtotime(date('Y-m-d H:i:s'));
//Define your startTime here in {Year-Month-Day Hour:Minute:Second} format
$startTime = '2012-04-26 21:57:00';
//Define your endTime here in {Year-Month-Day Hour:Minute:Second} format.
$endTime = '2012-04-27 22:00:00';
$startTimestamp = strtotime($startTime);
$endTimestamp = strtotime($endTime);
$numOfSecondsToReload = $startTimestamp - $currentTimestamp;
if($currentTimestamp >= $startTimestamp && $currentTimestamp <= $endTimestamp):
?>
<a href="*broadcastlink*">LIVE NOW</a>
<?php else: ?>
<p>Live at <?php echo date('H:i', $startTimestamp); ?></p>
<?php header( "refresh:$numOfSecondsToReload;$currentPage"); ?>
<?php endif; ?>
Update2:重新加载特定的div内容。这是您可以使用的代码。
<div id="live">
<?php
ob_start();
date_default_timezone_set('Europe/London');
$currentPage = $_SERVER['PHP_SELF'];
$currentTimestamp = strtotime(date('Y-m-d H:i:s'));
$startTime = '2012-04-27 12:42:20';
$endTime = '2012-04-28 22:00:00';
$startTimestamp = strtotime($startTime);
$endTimestamp = strtotime($endTime);
$numOfSecondsToReload = $startTimestamp - $currentTimestamp;
if($currentTimestamp >= $startTimestamp && $currentTimestamp <= $endTimestamp):
?>
<a href="*broadcastlink*">LIVE NOW</a>
<?php else: ?>
<p>Live at <?php echo date('H:i', $startTimestamp); ?></p>
<?php endif; ob_end_flush(); ?>
<div id="timeremaining" hidden><?php echo $numOfSecondsToReload * 1000; ?></div>
</div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
var numOfMiliSecondsToReload = $('#timeremaining').html();
var timeToReload = (numOfMiliSecondsToReload >= 0) ? numOfMiliSecondsToReload : 86400000;
$(function() {
$(function() { setTimeout( reloadDiv, timeToReload ); });
function reloadDiv() { $('#live').load(location.href);}
});
</script>
希望这会对你有所帮助。
答案 1 :(得分:0)
没有人会为你工作,所以不要等到有人为你编写脚本。
由于您知道在什么时候应该隐藏某些链接,因此您可以计算隐藏它们所需的时间。做这样的事情: