보낸쪽지함에서 상대방이 읽지 않은 쪽지 발송 취소
| Zeroboard 4
Posted at 2010/01/12 14:42
member_memo2.php

// 선택된 메모 삭제;;;
        if($exec == "del_all")
        {
                for($i=0; $i<count($del); $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까지 수정할 필요는 없을 것 같습니다.
 댓글 남기기
 
Comments 1
산소냥
2010-01-12 16:36:18 / IP 125.128.153.XXX
 
오! 안그래도 이 팁 적용시키려고 준비 중이었는데 올려주셨네요.
감사합니다~ ^^