관리자만 설정한 부분이 스크립트 동작후 출력되면 다른사람들에게도 보이게

관리자만 설정한 부분이 스크립트 동작후 출력되면 다른사람들에게도 보이게

QA

관리자만 설정한 부분이 스크립트 동작후 출력되면 다른사람들에게도 보이게

답변 2

본문

페이지를 만들다가 알람 기능을 작업해서 추가했습니다. 


<div class="box">알람</div><div class="text"></div>
   
 
  <?PHP if( $is_admin) { ?>
      <h1 class="livt">알람 설정</h1>
      <label for="time">시작 시간:</label>
      <input type="time" id="time" name="time">
      <button id="setAlarm">설정</button>
 
      <label for="time2">알람 시간:</label>
      <input type="time" id="time2" name="time2">
      <button id="setAlarm2">설정</button>
 
      <input type="text" id="textInput" placeholder="">
      <button id="submitButton">출력</button>
      <div id="output"></div>
    <?PHP } ?>  
  <script>
 
    $(document).ready(function() {
      $('#submitButton').click(function() {
        var inputText = $('#textInput').val();
        $('.text').text(inputText);
      });
 
      $("#setAlarm").click(function() {
        var alarmTime = $("#time").val(); 
        var currentTime = new Date(); 
        var selectedTime = new Date(currentTime.toDateString() + " " + alarmTime); 

 
        if (selectedTime <= currentTime) {
          // 선택한 시간이 현재 시간보다 이전인 경우
          alert("유효하지 않은 알람 시간입니다.");
          return;
        }
 
        var timeDiff = selectedTime - currentTime; 
 
        setTimeout(function() {
          $(".box").addClass('show');
          $("#submitButton").trigger('click');
        }, timeDiff);
      });
 
      $("#setAlarm2").click(function() {
        var alarmTime2 = $("#time2").val(); 
        var currentTime2 = new Date(); 
        var selectedTime2 = new Date(currentTime2.toDateString() + " " + alarmTime2);
 
        if (selectedTime2 <= currentTime2) {
          // 선택한 시간이 현재 시간보다 이전인 경우
          alert("유효하지 않은 알람 시간입니다.");
          return;
        }
 
        var timeDiff2 = selectedTime2 - currentTime2; 
 
        setTimeout(function() {
          $(".box").removeClass('show');
          $(".text").html('지금은 알람이 없습니다');
        }, timeDiff2);
      });
    });
  </script>
 

 

이런 소스인데

990219978_1687408433.6372.png

 

이렇게 보이고 시작시간과 끝나는시간(알람시간)을 설정하면 시작할때 알람태그에 class가 추가되어 표시가 되고 설정 옆 input에 텍스트를 쓰면 trigger로 시간맞춰 텍스트가 바뀌게끔 만들었는데요 이 부분에서 알람을 설정할 수 있는 부분은 관리자한테만 표시되고, 알람이 표시되는 시간에 맞춰 사이트를 이용하는 사람들한테 알람 표시만 보여지게끔 하고싶어서 설정부분을   <?PHP if( $is_admin) { ?> 으로 설정해주었습니다.

 

결과적으로 알람설정은 관리자한테만 보이게 되었으나 알람이 설정 된 시간이 되어도 사용자에게 표시가 뜨지 않는 문제가 생겼습니다. 관리자에게 보이는 코드를 삭제하고 실행하면 작동은 잘 됩니다. 

 

설정은 관리자한테만

표시는 페이지를 보는 누구나 볼 수 있게 하려면 어떻게 설정해주는게 좋을까요 ㅜㅜ

이 질문에 댓글 쓰기 :

답변 2

먼저 크게는 다음항목들이 필요합니다.

 

1. 설정한 값들에 대한 서버 저장

2. 서버에 저장된 값을 불러와 일반 사용자들에게 뿌려주는 부분

3. 1, 2 항목에 대한 올바른 동작이 보장된 경우 상세한 처리 (e.g. 범위 Validation, TimeZone 에 따른 오차 등)

관리자 혼자 사용한다면 쿠키나 로컬스토리지를 활용하는 방법도 생각해볼수 있는데
하지만 그것도 어디까지나 임시적인 방법입니다.
쿠키삭제 및 기타 사이트 데이터 삭제하면 데이터는 사라집니다.

더군다나 불특정 다수의 사용자가 어디에서나 확인하게 하려면
쿠키나 로컬스토리지로는 불가능합니다.

영구적, 안정적으로 데이터를 저장하려면 서버저장 밖에 없습니다.
서버 저장의 형태는 자체 DB 나 Cache 서버 또는 Firebase 같은 외부 서비스를 이용하는 방법이 있습니다.

관리자에게 보이는 코드를 삭제하고 실행하면 작동은 잘 됩니다.

<--이게 말이 안되는 상황 설명입니다


서버에 설정값을 저장하지않는다면 접속해 오는 사용자에게 관리자가 설정한 값을 어떻게 알아내어서

알람 페이지에 알람시각을 알려준다는 것인가요?

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 20
© SIRSOFT
현재 페이지 제일 처음으로