2013-09-25 3 views
-4

그래서 특정 시간대에 배경색을 변경하는 간단한 함수를 작성하려고하지만 뭔가 올바르게 작동하지 않습니다.PHP : 특정 시간대에 CSS 속성 변경

PHP를 실행할 때 페이지의 배경색이 비어 있고 HTML에 background-color: ;이 있습니다. blue 또는 black 속성에 도달하지 못하여 그 이유를 알고 싶습니다.

아이디어가 있으십니까?

PHP :

<?php 
function backgroundColor(){ 
    $backgroundColor = ''; 

    if (date('H:i') >= strtotime('06:00') && date('H:i') <= strtotime('20:00')){ 
     $backgroundColor == 'blue'; 
    } else { 
     $backgroundColor == 'black'; 
    } 

    return $backgroundColor; 
} 
?> 

HTML :

<html> 
<head> 
    <title></title> 

    <style> 
     body{ 
      background-color: <?=backgroundColor()?> ; 
     } 
    </style> 
</head> 
<body> 
    <?php echo date('H:i')?> 
</body> 
</html> 
+3

'$의 backgroundColor = '블루','하지'$의 backgroundColor == '블루', ' –

+0

참조 @MikeW "나는 PHP를 실행하면 ..."는 – Keven

+0

나는이에 훨씬 더 좋은 것 같아요 헤더의 스타일을 직접 변경하지 말고 ''태그의 클래스를 변경하십시오. – Jeemusu

답변

4

당신은 두 가지 문제가있다. 첫 번째는 시간이 정해져 있다면 (즉, I.E. 10:13) 유닉스 타임 스탬프로 형식화 된 시간보다 크거나 적음을 확인하는 것입니다. 이것은 불행하게도 효과가 없을 것입니다. 이 문제를 해결하려면 date() 전화를 strtotime() 방법으로 마무리해야합니다.

두 번째 문제는 복수 = 기호를 사용하여 값을 설정하려고합니다. PHP에서는 단일 =을 사용하여 값을 설정합니다. ==을 여러 개 사용하여 변수에 값이 있는지 확인합니다. 아래 수정 된 코드를보십시오 : 당신은 제대로 등가물로 두 가지를 변환하는 날짜() 함수에 한 strtotime() 함수를 사용할 필요가

function backgroundColor(){ 
    $backgroundColor = ''; 

    if (strtotime(date('H:i')) >= strtotime('06:00') && strtotime(date('H:i')) <= strtotime('20:00')){ 
     $backgroundColor = 'blue'; 
    } else { 
     $backgroundColor = 'black'; 
    } 

    return $backgroundColor; 
} 
1

.

또한 == 연산자 대신 == 비교 연산자를 사용하고있었습니다.

PHP :

<?php 
function backgroundColor(){ 
    $backgroundColor = ''; 
     if (strtotime(date('H:i')) >= strtotime('06:00') && strtotime(date('H:i')) <=    strtotime('20:00')){ 
    $backgroundColor = 'blue'; 
    } else { 
     $backgroundColor = 'black'; 
    } 
    return $backgroundColor; 
    } 
?> 

HTML :이 모든 생각과 웅대 한 문제를 제기하고 싶습니다

<html> 
<head> 
    <title></title> 
    <style> 
     body{ 
      background-color: <?php echo backgroundColor();?> ; 
     } 
    </style> 
</head> 
<body> 
    <?php date('H:i');?> 
</body> 
</html> 
1

. PHP는 시간대를 인식하는 언어가 아니기 때문에 서버 측 로직을 사용하여 이러한 유형의 테마를 사용하면 방문자 위치에 대한 신뢰할 수있는 통찰력이없는 경우 나중에 많은 골칫거리가 발생할 수 있습니다. 아마도 Javascript를 사용하여이 문제에 대한 완전히 다른 해결책을 제안 할 수 있습니다.

<script type="text/javascript"> 

function assignBackgroundColor(){ 

    var d = new Date(); 

    var body = document.body; 

    if (d.getHours() > 6 && d.getHours() <= 20){ 

    body.style.backgroundColor = "#0000FF"; //blue 

    }else{ 

    body.style.backgroundColor = "#000000"; //black 

    } 

} 

</script> 

그러면 본체의 onload 이벤트 중에 호출하십시오.

<body onload="assignBackgroundColor();"> 
+0

전에 해왔 던 일을했기 때문에 제가 이걸 가져 왔습니다. 그만한 가치가 없었습니다. 장기적으로는. – rfoo

+1

조언 해 주셔서 감사합니다. date_default_timezone_set()을보고 기본 시간대로 설정했지만 현재 사용자의 시간대에 따라 동적으로 변경되지는 않습니다. 나는이 JS를 살펴볼 것이다. – Keven

+0

예를 들어 사용자의 IP를 기반으로 사용자의 시간을 추측하거나 사용자에게 제공 할 위치 서비스를 사용해야합니다. 모든 간단한 인프라 스트럭처는 때로는 간단한 자바 스크립트로 안정적으로 필요한 모든 것을 할 수 있다고 조언하는 경우가 있습니다. – rfoo