2012-08-14 2 views
0

두 날짜를 비교하는 데 문제가 있습니다. 사용자는 Datepicker에서 형식 ('Y-m-d')으로 날짜를 선택합니다. 입력이 현재 날짜와 같지 않으면 오류 메시지가 표시되고 그렇지 않으면 출력이 표시됩니다.PHP에서 두 날짜 비교하기

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

이 지역에서 잘 작동하지만 난 그것을 업로드하려고 할 때, 그 더 이상 작동하지 않습니다 :

나는이 코드를 가지고있다. 대신, 이전 날짜는 현재 날짜가 아닌 현재 날짜로 받아 들일 수 있습니다.

+0

에 뭔가를하고 싶어하지 않는

또는 당신이 설명하는 문제가 서버에 전송하지 않고 단지 자바 스크립트에 의해 해결 될 수있다, 그것을 정확히 동일하게 만드는 방법이 있습니까? 어떻게해야합니까? – tek4granted

답변

3

아마도 표준 시간대는 로컬 컴퓨터가 아닌 서버에서 다르게 설정됩니다.

$first$second의 값을 인쇄 해보십시오.

구식 PHP 날짜 함수 (date, strtotime 등)를 사용하는 경우 PHP에서 사용하는 시간대를 date_default_timezone_set()으로 설정할 수 있습니다. 나는 새로운 코드로 DateTime & DateTimeZone 클래스를 사용하는 것이 좋습니다 있지만

, 그들은 당신이 여러 시간대를 포함하는 어떤 일을하는지, 특히, 작업하기 좋네요이야.

+0

예. 이미했는데, 그 다음날 인 2012-08-15로 날짜를 설정할 때 $ 첫 번째 값은 1990이고 $ 초는 1991 년입니다. 하지만 업로드 할 때 $ first의 값은 1991이고 $ second는 1990이고 같은 날짜가 주어집니다. 나는이 값을 echo ' '; – tek4granted

+0

디버그는 항상 좋은 대답입니다 –

+0

예, 가능하면 최대한 노력하고 있습니다. 감사 : D – tek4granted

0

서버가 요청한 시간대와 다른 표준 시간대에있을 가능성이 있습니까? 나는 이것이 불일치로 이어질 수 있다고 생각한다.

0

본인은 상황을 올바르게 이해하고 있습니다. 서버 시간대 (date()을 통해 얻음)가 클라이언트 시간대와 다르기 때문에 직접 공격하는 것은 많은 시간 실패합니다. 이 문제를 피하려면 자바 스크립트를 통해 클라이언트 시간을 서버에 보내야합니다. 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']를 통해 문자열로 고객의 오늘 날짜를 얻을. 그런 다음이를 어떻게 처리할지 결정하고 클라이언트에게 출력 할 수 있습니다. 당신이 시간대가 내 로컬 컴퓨터에서 서버에 다르게 설정되어있는 경우 서버