보낸쪽지함에서 상대방이 읽지 않은 쪽지 발송 취소 > Web Development

본문 바로가기

사이트 내 전체검색

Web Development

보낸쪽지함에서 상대방이 읽지 않은 쪽지 발송 취소

페이지 정보

작성자 규범^-^* 작성일 10-01-12 14:42 조회 5,361 댓글 1 Zeroboard 4

본문

member_memo2.php

// 선택된 메모 삭제;;;
if($exec == "del_all")
{
for($i=0; $i {
// 코드 추가 : 상대방이 읽지 않은 쪽지도 삭제하기
$data = mysql_fetch_array(mysql_query("select * from $send_memo_table where no=$del[$i]"));
if($data[readed]) mysql_query("delete from $get_memo_table where reg_date=$data[reg_date] and member_from=$member[no]");


mysql_query("delete from $send_memo_table where no='$del[$i]'");
}
mysql_close($connect);
movepage("$PHP_SELF?page=$page");
}

// 메모삭제
if($exec == "del")
{
// 코드 추가 : 상대방이 읽지 않은 쪽지도 삭제하기
$data = mysql_fetch_array(mysql_query("select * from $send_memo_table where no=$no"));
if($data[readed]) mysql_query("delete from $get_memo_table where reg_date=$data[reg_date] and member_from=$member[no]");


mysql_query("delete from $send_memo_table where no='$no' and member_no='$member[no]'");
mysql_close($connect);
movepage("$PHP_SELF?page=$page");
}


발송 취소를 해도 새 쪽지가 왔다는 메시지는 지워지지 않습니다.
로그인 후 페이지 이동 윗쪽에 다음 코드를 추가하면 해결되기는 합니다.

login_check.php

// 받은쪽지함 검사
$check = @mysql_num_rows(mysql_query("select * from $get_memo_table where member_no=$member_data[no] and readed=1"));
if(!$check) mysql_query("update $member_table set new_memo=0 where no=$member_data[no]");

// 로그인 후 페이지 이동
$s_url=urldecode($s_url);


이 부분에 대해서는 준빠님의 방식이 트래픽을 적게 차지할지도 모르겠습니다.

하지만 두 방식 모두 한가지 헛점이 있습니다.

극단적인 예로, 쪽지가 왔을 때 쪽지함에 들어갔지만 쪽지는 읽지 않은 경우, 다른 누군가가 발송 취소를 하여도 새 쪽지 메시지가 나오게 됩니다.

이것은 쪽지함에 들어간 시각을 확인하는 필드를 DB에 추가하는 등의 방법으로 해결이 가능해 보입니다.

그러나 위의 예는 발생할 확률이 상대적으로 낮으므로 DB까지 수정할 필요는 없을 것 같습니다.

1 Comments

산소냥님의 댓글

산소냥 아이피 (125.♡.153.162) 작성일

오! 안그래도 이 팁 적용시키려고 준비 중이었는데 올려주셨네요.
감사합니다~ ^^

Copyright ⓒ 2003-2024 LOVELET.COM. All rights reserved.
PC 버전으로 보기