[英]Comparing Two Dates in PHP
比較兩個日期時出現問題。 用戶將從Datepicker中選擇格式('Ym-d')的日期。 如果輸入的日期不等於當前日期,則會顯示錯誤消息,否則將顯示輸出。
我有以下代碼:
$today = date("Y-m-d");
$date = $_REQUEST['selected_date']; // date selected
$first = strtotime($today);
$second = strtotime($date);
if ($first != $second){
//error message
}else{
//some code
}
這在本地工作正常,但是當我嘗試上傳它時,它不再起作用。 相反,可以接受以前的日期而不是當前的日期。
可能在服務器上設置的時區與在本地計算機上設置的時區不同。
嘗試打印$first
和$second
的值。
如果您使用的是任何老式的PHP日期函數( date
, strtotime
等),則可以(並且應該)使用date_default_timezone_set()
)設置PHP使用的時區。
盡管我建議將DateTime
和DateTimeZone
類與新代碼一起使用,但它們更適合使用,尤其是當您執行涉及多個時區的任何事情時。
服務器是否可能與請求來自的時區不在同一時區? 我認為這可能會導致不匹配。
希望我能正確理解您的情況。 直接進行攻擊將失敗很多次,因為服務器時區(通過date()
獲得)與客戶端時區不同。 為避免此問題,您需要通過javascript將客戶端時間發送到您的服務器。 jQuery示例可能如下所示:
var date = new Date();
$.post("index.php", { today: (today.getMonth() + 1) + "/" + today.getDate() + "/" + today.getFullYear()}, function(data) {
alert(data); //server response here
});
在服務器上,您可以通過$_POST['today']
作為字符串獲取客戶的今天日期。 然后,您可以決定如何處理並將其輸出到您的客戶端。
另外,除非您要在服務器上進行處理,否則只需使用JavaScript即可解決您所描述的問題,而無需將其發送到服務器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.