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

고수님께 질문드립니다. 채택완료

소수리꼬 8개월 전 조회 2,368

</p>

<p><SCRIPT language="JavaScript">

start = 0;

function timer(){

    if(start>=0){

        times.innerHTML=start;

        setTimeout('timer()',1000);

    }

    start++;

}

</script>

<body onload="timer();"></p>

<p> </p>

<p><FORM name="fboardlist" METHOD="POST" action='./update.php'>

<input type='hidden' name='bo_table'   value='<?php echo $bo_table?>'></p>

<p>♤ <span id="times"></span>초 / 60초 이내로 제출하셔야 합니다.</p>

<p><input TYPE="submit" value="제출"  class="myBtn_confirm f_white"></p>

<p></form></p>

<p>

 

위 소스데로 하믄 타이머가 0부터 시간이 초단위로 흐르기 시작합니다.

제출 버튼을 눌렀을때의 타이머의 시간을 저장하고 싶습니다. (60초 이내로 제출버튼을 눌러야 하는데 몇초에 버튼을 눌럿는지를 저장하려고요)

어떻게 해야 하나요? 히든값에 담을 수는 없나요?

고수님들 힌트 좀 부탁드립니다.

 

 

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

답변 2개

채택된 답변
+20 포인트
glitter0gim
8개월 전

onsubmit 이벤트를 활용하여

현재 타이머 값을 히든 필드에 설정한 후 폼을 제출하면~,

이를 위해 <input type='hidden' name='elapsed_time' id='elapsed_time'> 필드를 추가,

폼 제출 시 elapsed_time 값에 start 변수를 저장하도록 하고 서버 측에서

$_POST['elapsed_time'] 값을 받아 몇 초에 제출되었는지를 확인하면 되지않을까 싶습니다.

 

*히든 필드를 추가하고, 폼의 onsubmit 이벤트에서 현재 초 값을 설정하도록 소스 변경.

</p>

<p><SCRIPT language="JavaScript">

start = 0;

function timer(){

    if(start >= 0){

        document.getElementById("times").innerHTML = start;

        setTimeout(timer, 1000);

    }

    start++;

}</p>

<p>function setElapsedTime(){

    document.getElementById("elapsed_time").value = start;

}

</script></p>

<p><body onload="timer();"></p>

<p><FORM name="fboardlist" METHOD="POST" action='./update.php' onsubmit="setElapsedTime();">

    <input type='hidden' name='bo_table' value='<?php echo $bo_table?>'>

    <input type='hidden' name='elapsed_time' id='elapsed_time' value='0'>

    ♤ <span id="times"></span>초 / 60초 이내로 제출하셔야 합니다.

    <input TYPE="submit" value="제출" class="myBtn_confirm f_white">

</form></p>

<p>

 

*update.php 파일에서 $_POST['elapsed_time'] 값을 받아

60초 이내에 제출되었는지 확인하고, 초과 시 제출을 막는 서버 측 검증 로직 추가.

</p>

<p><?php

if (!defined('_GNUBOARD_')) exit; // 보안 설정</p>

<p>$bo_table = $_POST['bo_table'];

$elapsed_time = isset($_POST['elapsed_time']) ? intval($_POST['elapsed_time']) : 0;</p>

<p>if ($elapsed_time > 60) {

    echo "<script>alert('제출 시간이 초과되었습니다. 다시 시도해주세요.'); history.back();</script>";

    exit;

}</p>

<p>// 정상적인 제출 프로세스 진행

?></p>

<p>

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

답변에 대한 댓글 2개

소수리꼬
8개월 전
답변감사합니다. 해보겠습니다.
g
glitter0gim
8개월 전
저도 한 수 배워갑니다. ^^

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

e
8개월 전

</p>

<p><SCRIPT language="JavaScript"></p>

<p>start = 0;</p>

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

<p>    if(start>=0){</p>

<p>        times.innerHTML=start;</p>

<p>        setTimeout('timer()',1000);</p>

<p>    }</p>

<p>    $("#time").val(start);</p>

<p>    start++;</p>

<p>}</p>

<p></script></p>

<p><body onload="timer();"></p>

<p> </p>

<p><FORM name="fboardlist" METHOD="POST" action='./update.php'></p>

<p><input type='hidden' name='bo_table'  value='<?php echo $bo_table?>'></p>

<p><input type='hidden' name='time' id='time'  value=''></p>

<p>♤ <span id="times"></span>초 / 60초 이내로 제출하셔야 합니다.</p>

<p><input TYPE="submit" value="제출"  class="myBtn_confirm f_white"></p>

<p></form></p>

<p>

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

답변에 대한 댓글 1개

소수리꼬
8개월 전
답변 감사드립니다. 도전해 보겠습니다.

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

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

로그인