게시글의 내용 중 일부를 Point 차감하고 보게 할 수 있을까요?

게시글의 내용 중 일부를 Point 차감하고 보게 할 수 있을까요?

QA

게시글의 내용 중 일부를 Point 차감하고 보게 할 수 있을까요?

본문

누구나 게시글을 볼 수 있되,

게시글 내용 중 일부를 기본적으로 숨김처리하고, "보기" 버튼을 클릭해서 Point 차감하고 보게하고 싶습니다.

 

예를 들어, "코가 긴 동물의 이름은?" 이라는 문제에 대한 힌트를 주고 싶은데요.

힌트 1. 정답 글자수 "보기" -> 3

힌트 2. 첫번째 글자 "보기" -> 코

힌트 3. 두번째 글자 "보기" -> 끼

힌트 4. 세번째 글자 "보기" -> 리

 

이런식으로 힌트를 보려면 포인트를 차감하고 볼 수 있고,

다음에 다시 해당 게시물을 조회했을 때, 이미 보았던 힌트는 포인트 차감없이 기본으로 보이도록 하고 싶어요.

이 질문에 댓글 쓰기 :

답변 4

할 수는 있는데 원하시는걸 다 답변으로 받을수 있을지는 모르겠네요.

볼때마다 해당에 대한 정보를 디비에 저장해두고 비교하면서 보여주거나 하시면 될거 같습니다.

게시글 내에 설문응답 Skin 같은 것들을 변형해서 설문 참여시 포인트를 차감하고 설문결과 대신 힌트를 보여주는 식으로 변경하면 되지 않을까 싶기도한데, 비슷한 Skin이 있을까요?

네 구현이야 가능합니다만

글 보기시 포인트 차감내역에 따라 기록해두고

오픈 글자수 기록해두어 그만큼 오픈해서 보여주면 될듯 합니다.

이렇게 해보는건 어떠실까요?

 

<?php
// 사용자의 포인트 정보를 가져오는 함수
function get_user_points($user_id) {
    // 포인트 정보를 데이터베이스 등에서 가져오는 로직
    // 예: SELECT points FROM users WHERE user_id = $user_id
    // 포인트 정보를 반환
    return $points;
}

// 사용자의 포인트를 차감하는 함수
function deduct_points($user_id, $points) {
    // 사용자의 포인트를 차감하는 로직
    // 예: UPDATE users SET points = points - $points WHERE user_id = $user_id
    // 차감 결과를 반환
    return $deducted;
}

// 게시글의 힌트 정보
$hints = [
    1 => "정답 글자수: 3",
    2 => "첫번째 글자: 코",
    3 => "두번째 글자: 끼",
    4 => "세번째 글자: 리"
];

// 사용자 정보 (예: 로그인한 사용자의 ID)
$user_id = 123;

// 게시글의 ID
$post_id = 456;

// 사용자의 포인트 정보 가져오기
$user_points = get_user_points($user_id);

// 게시글을 조회한 적이 있는지 확인
$has_viewed_post = check_if_user_has_viewed_post($user_id, $post_id);

// 힌트를 보기 위해 포인트를 차감하고 힌트 내용 출력
if ($has_viewed_post) {
    // 이미 게시글을 조회하여 힌트를 보았을 경우
    // 힌트 내용을 기본으로 보여줌
    foreach ($hints as $hint) {
        echo $hint . "<br>";
    }
} else {
    // 게시글을 처음 조회하여 힌트를 보는 경우
    // 포인트 차감 로직을 추가하여 포인트 차감 후 힌트를 보여줌
    $points_to_deduct = 1; // 힌트를 보기 위해 차감할 포인트
    if ($user_points >= $points_to_deduct) {
        // 포인트 차감 가능한 경우
        deduct_points($user_id, $points_to_deduct);
        mark_post_as_viewed($user_id, $post_id); // 게시글을 조회한 것으로 표시
        foreach ($hints as $hint) {
            echo $hint . "<br>";
        }
    } else {
        // 포인트 차감 불가능한 경우
        echo "포인트가 부족하여 힌트를 볼 수 없습니다.";
    }
}
?>
 

답변을 작성하시기 전에 로그인 해주세요.
전체 948
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT