2012-09-18 4 views
0

데이터를 수집하는 데 사용되는 사이트를 설계했지만 현재 설계중인 사람이 창을 닫은 경우 또는 시스템을 위해 중복 양식을 원합니다. 닥쳐. 사용자가 특정 시간 동안 연결이 끊어 지거나 데이터를 제출하지 않고 브라우저 창을 닫거나 시스템을 종료 한 경우 수집 된 데이터를 가져 와서 MYSQL 데이터베이스에 기록하는 방법이 있습니까?사용자가 페이지/시스템을 종료하면 자동으로 다시 쓰기

답변

1

순수한 HTML 페이지만으로는이 작업을 수행 할 수 없습니다. 사용자가 양식을 제출하지 않으면 서버에서 입력 한 내용을 알 수 없습니다.

그러나 몇 초 (또는 몇 번의 키 - 스톡 또는 클릭)마다 AJAX 호출을 한 페이지에 자바 스크립트를 넣을 수 있습니다. 아이디어는 JavaScript가 보이지 않게 전체 양식을 PHP 페이지에 제출하여 일종의 "보관 영역"에 저장하는 것입니다.

사용자가 양식을 제출 한 경우 보관 영역을 삭제할 수 있지만 삭제하지 않은 경우 보관 영역의 데이터가 사용자에게 표시됩니다.

1

이 szenario를 부분적으로 막는 가장 일반적인 기법은 웹 앱이 하트 비트 기능을 사용하여 일정 간격으로 자바 스크립트를 통해 작동하고 서버에 요청을 보내는 것입니다. 사용자가 아직 로그온했는지 또는 양식 필드에 이미 입력 된 데이터를 제출할 것인지를 나타낼 수 있습니다.

아약스 자동 저장 기능으로 생각하십시오!

당신은 이것을 위해 코드에 자바 스크립트를 추가해야하지만 일반적으로 사용되는 jquery 나 mootools와 같은 자바 스크립트 라이브러리는 잘 문서화되어 있으며 이런 식으로 많은 예제를 제공합니다.

+0

자동 저장하는 경우 사용자가 사이트의 전체 흐름을 완료했다고 가정하지 않았는지 확인하십시오. 많은 시스템에서 이용 약관 확인란은 마지막 페이지에 있지만 사용자가 동의하지 않은 경우 데이터를 사용하지 않는 것이 좋습니다! –

+0

물론. 관련된 기술은 원하는 솔루션에 적절히 적용되어야합니다. – Bjoern

+0

@AlainCollins "자동 저장"비교를 확장하기 위해 편집기 또는 워드 프로세서는 자동 저장 될 때 편집되는 "실제"파일을 정상적으로 덮어 쓰지 않고 필요한 경우 검색 할 "개인"저장소에 저장합니다. – IMSoP

2

웹에 상태가없고 연결이 끊어져 있으므로 모든 데이터가 페이지 요청간에 유지됩니다.

PHP로 생성 된 웹 페이지에 긴 데이터 입력 양식이 포함되어 있고 사용자가 브라우저 창을 닫을 때 해당 양식에 데이터를 저장한다고 가정합니다. 해결책은 양식의 현재 데이터로 서버를 폴링하거나 최소한 윈도우 닫기 이벤트에 연결하는 클라이언트 스크립트.

실제 구현은 OP에 맡겨진 작업입니다.

+0

명시 적 조치없이 서버에 데이터를 보내는 것보다 사용자에게 묻는 것이 훨씬 정중 (그리고 아마도 _legal_)합니다. 나는 의견을 포기할 때 나타나는 작은 팝업을 좋아합니다. –

+0

@AlainCollins 그러나 "동의"없이 답변을 입력하는 동안 SO가 자동 저장됩니다. – IMSoP

+0

절대로 그렇게 완벽했다 :) –