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

时间:2012-02-29 03:25:26

标签: php date

我正在组建一个基于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语句包装整个东西看起来很荒谬。也许根据日期重定向到一个不同的页面?

感谢任何帮助。

5 个答案:

答案 0 :(得分:5)

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

  1. 登录您的WordPress安装。
  2. 导航至外观&gt;的编辑
  3. 模板部分中,转到 header.php
  4. 在header.php的 very 开头,插入您的代码:

  5. <?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.
    

    完成后,不要忘记单击WordPress上的“更新文件”按钮;和其他人说的一样,确保你指定的时间与服务器所在的时区同步。

答案 1 :(得分:2)

我认为从技术上讲,你的代码的逻辑是可行的但是,有更好的方法可以做到这一点。但是,为了您的目的,我们会很简单。

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

<?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?
}
?>

答案 2 :(得分:1)

您可以将splash和content组件放在单独的.php文件中,然后在条件句中包含()。

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

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

您需要设置.htaccess,以便人们无法将浏览器指向secrettdir并直接访问contest.php

答案 3 :(得分:1)

您不必包含内容,您可以使用以下内容:

<?php 

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

//code here wont be executed

小心时区!您的服务器可能与您的内容位于不同的时区。

答案 4 :(得分:0)

// setup the start date (in a nice legible form) using any
// of the formats found on the following page:
// http://www.php.net/manual/en/datetime.formats.date.php
$contestStart = "February 1, 2012"; 

// check if current time is before the specified date
if (time() < strftime($contestStart)){
  // Display splash screen
}

// date has already passed
else {
  // Display page
}