2012-06-13 3 views
2

현재 사용자가 단일 보드 내장 컴퓨터에서 로컬 설정을 변경할 수있는 웹 페이지를 코딩하고 있습니다. 현재 작업중인 기능에는 보드의 시계와 사용자 컴퓨터의 시계를 동기화하는 것이 포함됩니다. Javascript Date() 함수를 사용하면 로컬 컴퓨터의 시간을 가져올 수 있으므로 현재 시간을 가져 오는 데 사용하고 있습니다.

나의 목표는 눌렀을 때 javascript Date() 함수에서 정확한 시간을 가져온 다음 POST 메서드를 사용하여 해당 시간을 PHP 코드로 반환하는 제출 단추를 만드는 것입니다. 값을 POST해야하는 이유는 보드의 시간 설정을 변경할 수있는 권한이있는 Linux 명령 줄 프로그램을 실행할 수 있기 때문입니다.

지금 보드가 올바르게 시간을 가져 와서 올바르게 게시하지만 문제는 제출 된 버튼을 클릭 한 시간이 아니라 페이지가로드 된 시간이 반환된다는 것입니다.

사용자가 5 분 동안 웹 페이지에 앉아서 해당 버튼을 클릭하면 보드의 시계가 5 분 뒤에 시간이 전송되기 때문에 이것은 문제입니다.

게시 된 숨겨진 입력 항목에 값을 할당하여 게시하려고 시도했지만 게시 된 시간은 페이지로드 시간입니다. 내가 시도한 또 다른 방법은 <body> 태그에 자바 스크립트 함수의 onUnload 호출을 추가하는 것이지만 동일한 메소드를 사용하여 해당 시간을 전달하려고 시도 할 때 값이 게시되지 않는 것처럼 보입니다. 사전에

<?php 
echo "<form method='POST' action='".$PHP_SELF."'>"; 

if (isset($_POST['getLocalTime'])) 
{ 
    echo $_POST['localTime'].'<br>'; 
    $setLocalTime = "My Commandline String"; 
    exec($setLocalTime); 
} 
?> 

<input type="hidden" id="localTime" name="localTime"> 

<script language='JavaScript'> 
var date = new Date(); 
var d = date.getUTCDate(); 
var day = (d < 10) ? '0' + d : d; 
var m = date.getUTCMonth() + 1; 
var month = (m < 10) ? '0' + m : m; 
var year = date.getUTCFullYear(); 
var h = date.getUTCHours(); 
var hour = (h < 10) ? '0' + h : h; 
var mi = date.getUTCMinutes(); 
var minute = (mi < 10) ? '0' + mi : mi; 
var sc = date.getUTCSeconds(); 
var second = (sc < 10) ? '0' + sc : sc; 
var loctime = month + day + hour + minute + year + "." + second; 

document.getElementById('localTime').value = loctime; 
</script> 

<?php 
echo "<pre>"; 
print_r($_POST); 
echo "</pre>"; 
?> 

<input class="button" type="submit" name="getLocalTime" value="Copy Local Time"> 
</form> 

내가 제공 할 수있는 모든 제안을 주셔서 감사합니다, 감사 : 여기

는 중요한 코드 나는 현재 함께 일하고 덩어리이다.

답변

6

스크립트를 함수에 넣고 양식 객체의 onSubmit을 사용하여 해당 함수를 실행해야합니다.

echo "<form method='POST' action='".$PHP_SELF."' onsubmit='getTime();'>"; 

그리고 자바 스크립트에 대한 :

<script language='JavaScript'> 
function getTime(){ 
var date = new Date(); 
var d = date.getUTCDate(); 
var day = (d < 10) ? '0' + d : d; 
var m = date.getUTCMonth() + 1; 
var month = (m < 10) ? '0' + m : m; 
var year = date.getUTCFullYear(); 
var h = date.getUTCHours(); 
var hour = (h < 10) ? '0' + h : h; 
var mi = date.getUTCMinutes(); 
var minute = (mi < 10) ? '0' + mi : mi; 
var sc = date.getUTCSeconds(); 
var second = (sc < 10) ? '0' + sc : sc; 
var loctime = month + day + hour + minute + year + "." + second; 

document.getElementById('localTime').value = loctime; 
} 
</script> 
+0

대단히 감사합니다! 그것은 완벽하게 작동합니다! – jetbomber117

0
<?php 
echo "<form id="loctimeform" method='POST' action='".$PHP_SELF."'>"; 

if (isset($_POST['getLocalTime'])) 
{ 
    echo $_POST['localTime'].'<br>'; 
    $setLocalTime = "My Commandline String"; 
    exec($setLocalTime); 
} 
?> 

<input type="hidden" id="localTime" name="localTime"> 
</form> 

<script language='JavaScript'> 

function doGetLocTime() { 

var date = new Date(); 
var d = date.getUTCDate(); 
var day = (d < 10) ? '0' + d : d; 
var m = date.getUTCMonth() + 1; 
var month = (m < 10) ? '0' + m : m; 
var year = date.getUTCFullYear(); 
var h = date.getUTCHours(); 
var hour = (h < 10) ? '0' + h : h; 
var mi = date.getUTCMinutes(); 
var minute = (mi < 10) ? '0' + mi : mi; 
var sc = date.getUTCSeconds(); 
var second = (sc < 10) ? '0' + sc : sc; 
var loctime = month + day + hour + minute + year + "." + second; 

document.getElementById('localTime').value = loctime; 

} 

function doSubmitForm() { 
    doGetLocTime(); 
    document.getElementById('loctimeform').submit(); 
} 

</script> 

<?php 
echo "<pre>"; 
print_r($_POST); 
echo "</pre>"; 
?> 

<input class="button" type="button" name="getLocalTime" value="Copy Local Time" onclick="doSubmitForm();"> 
3

당신은 페이지가 렌더링 변수 loctime를 선언하고 있기 때문에 이런 일이, 당신이 필요 양식 정의에서

계속 제출하십시오.

기본적으로 함수에서 자바 스크립트를 래핑하고 onsubmit이라고 부릅니다. 코드를 너무 많이 변경하지 않고 다음 작업을 수행 할 수 있습니다.

<?php 
echo "<form method='POST' onsubmit='getTime();' action='".$PHP_SELF."'>"; 

if (isset($_POST['getLocalTime'])) 
{ 
    echo $_POST['localTime'].'<br>'; 
    $setLocalTime = "My Commandline String"; 
    exec($setLocalTime); 
} 
?> 

<input type="hidden" id="localTime" name="localTime"> 

<script language='JavaScript'> 
function getTime() { 
    var date = new Date(); 
    var d = date.getUTCDate(); 
    var day = (d < 10) ? '0' + d : d; 
    var m = date.getUTCMonth() + 1; 
    var month = (m < 10) ? '0' + m : m; 
    var year = date.getUTCFullYear(); 
    var h = date.getUTCHours(); 
    var hour = (h < 10) ? '0' + h : h; 
    var mi = date.getUTCMinutes(); 
    var minute = (mi < 10) ? '0' + mi : mi; 
    var sc = date.getUTCSeconds(); 
    var second = (sc < 10) ? '0' + sc : sc; 
    var loctime = month + day + hour + minute + year + "." + second; 

    document.getElementById('localTime').value = loctime; 
} 
</script> 

<?php 
echo "<pre>"; 
print_r($_POST); 
echo "</pre>"; 
?> 

<input class="button" type="submit" name="getLocalTime" value="Copy Local Time"> 
</form>