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

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

QA

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

본문

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


<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 같은 외부 서비스를 이용하는 방법이 있습니다.

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

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


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

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

 

답변을 작성하시기 전에 로그인 해주세요.
전체 20
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT