2012-10-01 1 views
0

사용자가 일종의 DB에 사진을 업로드 할 수있는 웹 사이트 (PHP)를 만들려고하는데, 페이지를 떠날 때 사진이 삭제됩니다. 다른 사용자 (다른 페이지)는 삭제되지 않은 모든 사진을 볼 수 있습니다. 사용자가 떠날 때 숫자 (1.jpg, 2.jpg, 3.jpg 등)로 업로드하고 이름을 모든 사진 ('사진'을 불러올 수)사용자가 페이지를 떠날 때 그림을 삭제하는 파일 업로드 사이트를 만들려면 어떻게해야합니까?

폴더를 생성 :

나는 이런 식으로하는 것이 일을 생각 사진이 자신을 삭제할 페이지 (방법 ??) 다음 사진이 업로드 될 때 웹 사이트는 촬영되지 않은 첫 번째 번호를 검색합니다. 사람이 더 나은 아이디어가있는 경우

나는 다른, 그것을 듣고 싶습니다 :

  1. 을 나는 # .JPG 파일로 채워진 폴더에서 첫번째하지-촬영 한 수를 찾아 기능을 구축 할 수있는 방법 만? (숫자를 두 번 취하는 것을 막기 위해 무엇을 할 수 있습니까?)

  2. 사용자가 페이지를 떠날 때 사진을 삭제하려면 어떻게해야합니까?

  3. 디렉토리에서 임의의 사진을 어떻게 표시합니까? 그 후

대답한다 : 나는 또한 사진을 볼 사용자가 1, 2 또는 3을 클릭하고합니다 (그림을 업로드 한 사람에 1 초에서 2 초와 3 초의 수를 표시 할 수 있도록하려면 누가 아직도 창문을 열어 놓았는지). 내가 어떻게 해? (SQL db없이 똑똑한 방법을 찾으십시오)

아이디어 : 파일 이름을 #_1s_2s_3s.jpg (예 : 1_0_0_1.jpg)으로 변경하면 다른 모든 질문이 훨씬 더 어려워 질 것입니다.

+0

데이터베이스 아래 있기를 원하지 않는 이유가 있습니까?나는 SQL 트랜잭션이 디스크 읽기보다 일반적으로 빠르다는 것을 확신하고 있는데, 이것은 또한 당신이 물어 보는 번호 체계에 큰 도움이 될 것입니다. –

+0

은 새로운 아이디어를 추가했으며 SQL로 할 수 있을지 모르지만 어떻게해야 할 지 모르겠습니다. SQL 함께 일한 아직 내가 뭘 찾고있어 최선의 아이디어 (사용자가 밖으로 덤핑) –

+0

db에, 파일 이름이 아닌 파일을 저장할 ... – Rooster

답변

0

명백한 로그 아웃 이벤트가없는 경우 (대답이 쉬운 경우) "사용자 이탈"은 "사용자가 x 시간 동안 방문을 중지했습니다."라는 용어로만 정의 할 수 있습니다. 나는. 이것은 꽤 전형적인 세션/타임 아웃 기반 상황입니다. 세션은 동일한 방식으로 작동합니다. 세션 시간 제한은 사용자가 다른 페이지를 방문 할 때마다 연장되지만, x 시간 동안 부실 상태가 지속되면 결국 제거됩니다.

나는 당신의 아이디어를 유사한 방식을 건의 할 것입니다 : 첫 번째 방문에

  1. 는, 사용자가 쿠키에 임의의 ID를 가져옵니다 해당 ID에 대한 데이터베이스 레코드를 저장합니다.
  2. 모든 페이지로드시 해당 사용자 ID의 데이터베이스에 last_seen 시간 소인을 갱신합니다.
  3. 모든 업로드 된 이미지를 해당 ID의 데이터베이스에 연결합니다.
  4. last_seen이 x보다 오래된 경우 일정한 간격으로 사용자 ID와 관련 이미지를 정리합니다. 이것은 크론 작업이나 x 페이지가로드 될 때마다 무작위로 실행되는 작업으로 구현 될 수 있습니다.

가비지 수집주기의 일부로 이미지를 지우는 사용자 정의 세션 핸들러를 작성할 수 있습니다. 처음에는 http://php.net/session_set_save_handler을 참조하십시오.

+0

감사합니다. 비슷한 아이디어를 언급 했으므로 주석에 - 아직, 사용자는 전체 시간 동안 한 페이지에 머물러 있습니다 (또 다른 문제 : SQL 데이터가 거기에서 자체적으로 업데이트되어야합니다) 그래서 어떻게 타임 스탬프를 업데이트 할 수 있습니까? 새로운 아이디어 : 아마도 updatetimestamp.php와 같은 PHP 파일을 만들 것입니다. id = image_id & code = image_random_generated_pass_code, # s.php? id = image_id & code = image_random_generated_pass_code –

+0

#s를 업데이트하기 위해 js 파일의 timed 루프에 3을 포함시킵니다. 값, 첫 번째 (업데이터) 빈 것입니다 그래서 너무 js 루프 (어떻게 보이지 않는 iframe 또는 너무 포함됩니다 작동합니까?) –

+0

페이지를 새로 고치려면 않을거야 Javascript/AJAX를 사용하여 매번 서버를 핑 (ping)하여 사용자가 아직 있는지 확인하십시오. 그 아이디어는 제가 설명한 것과 변함이 없습니다. – deceze

관련 문제