使用PHP显示基于日期的内容

使用PHP显示基于日期的内容,php,date,Php,Date,我正在建立一个基于Wordpress的竞赛网站。从法律上讲,比赛必须在午夜开始。为了避免在午夜起床来设置内容,我想构建一些PHP逻辑来显示开始日期之后的所有内容,然后在开始日期之前显示一些基本的HTML页面。我完全是一个编程新手,但我正在努力解决这个问题,以下是我到目前为止的情况: <?php // The current date $date = date('Y, j, m'); // Static contest start date $contestStart = ('2012,

我正在建立一个基于Wordpress的竞赛网站。从法律上讲,比赛必须在午夜开始。为了避免在午夜起床来设置内容,我想构建一些PHP逻辑来显示开始日期之后的所有内容,然后在开始日期之前显示一些基本的HTML页面。我完全是一个编程新手,但我正在努力解决这个问题,以下是我到目前为止的情况:

<?php

// The current date
$date = date('Y, j, m');

// Static contest start date
$contestStart = ('2012, 02, 03');

// If current date is after contest start
if ($date > $contestStart) {
//contest content?
}

else {
// splash content?
}
?>

我觉得有更聪明的方法可以做到这一点。我的网站相当大。。。用if语句来包装整件事似乎很可笑。可能会根据日期重定向到另一个页面


非常感谢您的帮助。

我想从技术上讲,您的代码逻辑可以正常工作,但确实有更好的方法。然而,出于您的目的,我们将简单介绍

您应该与时间戳而不是字符串进行比较。试试这个:

<?php

// The current date
$date = time();

// Static contest start date
$contestStart = strtotime('2012-02-03 00:00:00');

// If current date is after contest start
if ($date > $contestStart) {
//contest content?
}

else {
// splash content?
}
?>

//使用任何
//以下页面中的格式:
// http://www.php.net/manual/en/datetime.formats.date.php
$contesticstart=“2012年2月1日”;
//检查当前时间是否在指定日期之前
if(time()
您可以将splash和content组件放在单独的.php文件中,只需将()包含在条件中即可

if ($date > $contestStart) {
    include("SECRETDIR/contest.php");
}

else {
    include("SECRETDIR/splash.php");
}

您需要设置一个.htaccess,这样人们就不能将浏览器指向secretdir并直接访问contest.php。您不必包装内容,您可以使用如下内容:

<?php 

if ( time() < strtotime('2012-02-03 00:00:00') ) {
    echo "not yet!";
    exit;
}

//code here wont be executed

您需要修改WordPress主题,以便在站点范围内进行更改

  • 登录到WordPress安装
  • 导航到外观编辑器
  • 在模板部分,转到header.php
  • 在header.php的开头,插入您的代码:

  • 
    在这里插入整个启动页面。
    //正常的模板代码应该在下面。
    


    完成后别忘了点击WordPress上的“更新文件”按钮;正如其他人所说的,确保您指定的时间与服务器所在的时区同步。

    或者您可以将所有html放在条件中。别想过去。我不喜欢这样混合视图,但在某些情况下,快速补丁是令人满意的。应该注意的是,strftime在这种情况下可能是最好的,而不是我提到的strotime。原因如下:我不明白为什么strftime,我总是使用time(stamp)s(而不是格式化字符串)来比较datetime值。它更快,更不容易出错。
    <?php 
    
    if ( time() < strtotime('2012-02-03 00:00:00') ) {
        echo "not yet!";
        exit;
    }
    
    //code here wont be executed
    
    <?php
    $date = time();
    
    $contestStart = strtotime('2012-02-03 00:00:00');
    
    if ($date < $contestStart) {
    ?>
    
    <html>
        Insert your whole splash page here.
    </html>
    
    <?php
    exit;
    }
    ?>
    //The normal template code should be below here.