테스트 사이트 - 개발 중인 베타 버전입니다

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

99xx0821 2년 전 조회 1,995

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

</strong></p>

<p><div class="box">알람</div><div class="text"></div></p>

<p>   </p>

<p> </p>

<p>  <?PHP if( $is_admin) { ?></p>

<p>      <h1 class="livt">알람 설정</h1></p>

<p>      <label for="time">시작 시간:</label></p>

<p>      <input type="time" id="time" name="time"></p>

<p>      <button id="setAlarm">설정</button></p>

<p> </p>

<p>      <label for="time2">알람 시간:</label></p>

<p>      <input type="time" id="time2" name="time2"></p>

<p>      <button id="setAlarm2">설정</button></p>

<p> </p>

<p>      <input type="text" id="textInput" placeholder=""></p>

<p>      <button id="submitButton">출력</button></p>

<p>      <div id="output"></div></p>

<p>    <?PHP } ?>  </p>

<p>  <script></p>

<p> </p>

<p>    $(document).ready(function() {</p>

<p>      $('#submitButton').click(function() {</p>

<p>        var inputText = $('#textInput').val();</p>

<p>        $('.text').text(inputText);</p>

<p>      });</p>

<p> </p>

<p>      $("#setAlarm").click(function() {</p>

<p>        var alarmTime = $("#time").val(); </p>

<p>        var currentTime = new Date(); </p>

<p>        var selectedTime = new Date(currentTime.toDateString() + " " + alarmTime); </p>

<p>

 </p>

<p>        if (selectedTime <= currentTime) {</p>

<p>          // 선택한 시간이 현재 시간보다 이전인 경우</p>

<p>          alert("유효하지 않은 알람 시간입니다.");</p>

<p>          return;</p>

<p>        }</p>

<p> </p>

<p>        var timeDiff = selectedTime - currentTime; </p>

<p> </p>

<p>        setTimeout(function() {</p>

<p>          $(".box").addClass('show');</p>

<p>          $("#submitButton").trigger('click');</p>

<p>        }, timeDiff);</p>

<p>      });</p>

<p> </p>

<p>      $("#setAlarm2").click(function() {</p>

<p>        var alarmTime2 = $("#time2").val(); </p>

<p>        var currentTime2 = new Date(); </p>

<p>        var selectedTime2 = new Date(currentTime2.toDateString() + " " + alarmTime2);</p>

<p> </p>

<p>        if (selectedTime2 <= currentTime2) {</p>

<p>          // 선택한 시간이 현재 시간보다 이전인 경우</p>

<p>          alert("유효하지 않은 알람 시간입니다.");</p>

<p>          return;</p>

<p>        }</p>

<p> </p>

<p>        var timeDiff2 = selectedTime2 - currentTime2; </p>

<p> </p>

<p>        setTimeout(function() {</p>

<p>          $(".box").removeClass('show');</p>

<p>          $(".text").html('지금은 알람이 없습니다');</p>

<p>        }, timeDiff2);</p>

<p>      });</p>

<p>    });</p>

<p>  </script></p>

<p><strong>
 

 

이런 소스인데

 

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

 

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

 

설정은 관리자한테만

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

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
2년 전

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

 

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

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

9
99xx0821
2년 전
내용을 꼭 서버에 저장을 해야할까요?! 단순하게 설정한 시간에만 알람을 잠깐 띄우고싶은건데ㅜㅜ
배르만
2년 전
관리자 혼자 사용한다면 쿠키나 로컬스토리지를 활용하는 방법도 생각해볼수 있는데
하지만 그것도 어디까지나 임시적인 방법입니다.
쿠키삭제 및 기타 사이트 데이터 삭제하면 데이터는 사라집니다.

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

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

댓글을 작성하려면 로그인이 필요합니다.

2년 전

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

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

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

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

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인