2011-10-26 59 views
0

我試過每個組合我都能想到/發現,無論我做什麼,即使帳戶未被鎖定,我的代碼也會回覆該消息:Php沒有閱讀日期<=到當前日期正確

<?php 
    $infosql = "SELECT * FROM premiersounds_users WHERE customer_id = $id"; 
    $inforesult = mysql_query($infosql) or die(mysql_error()); 
    $info = mysql_fetch_array($inforesult); 

    //Get current date from server 
    $format="%m/%d/%y"; 
    $c_date=strftime($format); 
    //set sessions 
    $_SESSION['current_date'] = $c_date; 
    //The date in the database is 10/31/11 
    $_SESSION['lockout_date'] = $l_date; 

    //Check is Current date = lockout date 

    if ($c_date <= $l_date) { 
     header("location:documnet_editors/edit_weddingplanner.php?id=$id"); 
    } 

    else { 
     echo 'Whoops! Were sorry your account has been locked to edits 
     because your event is less than 48 hours from now or your event has passed. 
    To make changes to your event please contact your DJ.'; 
    } 

?> 

<?php 
    //Destroy Session for Lockout Date to prevent bypasses 
    unset($_SESSION['lockout_date']); 
?> 
+2

凡被定義'$ l_date'?這不在你的樣本中。 –

+0

嚴重的是,你怎麼可以不把這個問題 –

+0

請發佈代碼 –

回答

0

如果你的$ l_date被填充了,我不認爲它是,如果它被存儲爲MM/DD/YY,你將需要使用PHP的strtotime將其轉換爲unix時間戳以進行快速比較:

if(strtotime($db_date) >= time()) 
{ 
    // do something 
} 
0

將您的日期轉換爲unixtime以獲得更準確的對比。此功能添加到您的代碼:

function unix_time($date){ 
    $unix_date = str_replace("-","/",$date); 
    $unix_date = str_replace(".","/",$unix_date); 
    $unix_date = str_replace(" pm","",$unix_date); 
    $unix_date = str_replace(" am","",$unix_date); 
    $time = strtotime($unix_date); 
    return $time; 
} 

然後將日期轉換爲UNIX:

$l_date = unix_time($_SESSION['lockout_date']); 
$c_date = unix_time($_SESSION['current_date']); 

,或者您也可以直接從數據庫獲取日期:

$l_date = unix_time($info['date_in_database']); 

比較的日期在unix格式中:

if ($c_date = $l_date) { 
    // your code here 
} 

這應該工作。

+1

他已經聲明他的日期是以「10/31/11」格式存儲的,它將被strtotime解釋爲美國時間類型,並相應地解析出月份和日期。其次,$ c_date是當前時間,因此沒有理由不僅僅是節省處理開銷並使用內置的time()函數。 – Josh

0

我建議比較時間戳,而不是日期格式:

<?php 
$date_a = new DateTime(); 
$date_b = new DateTime('2000-10-20 00:10:20'); 
if ($date_a->getTimestamp() > $date_b->getTimestamp()) { 
    echo 1; 
} else { 
    echo 0; 
}