연락처 마스킹 적용이 되지 않는데요...ㅜ

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
연락처 마스킹 적용이 되지 않는데요...ㅜ

QA

연락처 마스킹 적용이 되지 않는데요...ㅜ

본문

1890276034_1673356819.9316.png

미천한 실력이나 어째저째 여분필드도 연구하여 하이픈도 넣어서 이렇게 노출되고 있는데

여기서 중간 4자리랑 마지막 앞 2자리를 마스킹처리(*)하고 싶어

$list[$i]['wr_8'] = preg_replace('/-(\d+)-/e',"'-'.str_repeat('*',strlen('\\1')).'-'",$list[$i]['wr_8']);

위 코드를 넣었는데 연락처가 아예 나오지 않습니다..

연락처는 인풋창 하나에 *** 개인정보보호를 위한 휴대폰번호 노출방지 *** 이렇게 받습니다

부디 방법을 알려주시면 감사하겠습니다!

이 질문에 댓글 쓰기 :

답변 4

우선 /e Modifier 는 더이상 지원되지 않고 에러라고 합니다.

PHP Warning:  preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead

https://www.php.net/manual/en/function.preg-replace.php#refsect1-function.preg-replace-errors

 

정규식으로는 이렇게 처리할수 있는데


$list[$i]['wr_8'] = preg_replace('/-\d{4}-\d{2}/','-****-**',$list[$i]['wr_8']);

 

패턴이 단순하다면 다음 방법도 좋을것 같습니다.


$list[$i]['wr_8'] = substr($list[$i]['wr_8'], 0, 3) . '-****-**' . substr($list[$i]['wr_8'], -2);

*** 개인정보보호를 위한 휴대폰번호 노출방지 ***

$list[$i]['wr_8'] = preg_replace('/-(\d{4})-/i',"-****-",$list[$i]['wr_8']);

위의 코드를 적용하면 
010-****-5678
이와 같이 됩니다.

배르만님, 설국열차님 댓글 너무 감사합니다

하지만 배르만님이 남겨주신 코드를 이렇게 사용하면

if (!$is_admin && $list[$i]['wr_8']) {

                $list[$i]['wr_8'] = substr($list[$i]['wr_8'], 0, 3).'-****-**'.substr($list[$i]['wr_8'], -2);

            }

----> 01000 이렇게만 노출이되고

$list[$i]['wr_8'] = preg_replace('/-(\d{4})-/i',"-****-",$list[$i]['wr_8']);

설국열차님이 남겨주신 코드로 했을때는 아예 마스킹처리가 되지 않는데

혹시 제가 무슨 설정이 안되어 있는걸까요??...

두분 코드가 틀린거 같지는 않은데요 

 

write.skin.php에
<input type="text" name="wr_8" value="<?php echo $write['wr_8'] ?>" class="frm_input2" size="10" maxlength="11">
인풋박스 여분필드 지정해주고
list.skin.php에서

for ($i=0; $i<count($list); $i++) {
        if ($i%2==0) $lt_class = "even";
        else $lt_class = "";

            if (!$is_admin && $list[$i]['wr_8']) {
                $list[$i]['wr_8'] = preg_replace('/-\d{4}-\d{2}/','-****-**',$list[$i]['wr_8']);-(두 분 코드)
            }
                ?>
넣고 노출되어야 할 곳에
<td class="td_phone"><?php echo hyphen_hp_number($list[$i]['wr_8']); ?></td>
이런식으로 작성했습니다
마스킹과 하이픈이 동시에 처리되어 노출되는게 아니라서 그런걸까요??

https://github.com/gnuboard/gnuboard5/blob/master/lib/common.lib.php#L2829
가공된 string 을 hyphen_hp_number 함수에서 다시 가공하는것 같은데
함수 벗겨내고 확인한번 해보세요


<td class="td_phone"><?php echo $list[$i]['wr_8']; ?></td>

배르만님 말씀이 맞았습니다!

hyphen_hp_number함수를 없애니까 원하는대로 노출이 되네요

아...php공부를 아주아주 기초부분만 해서인지 어렵네요

설국열차님이 주신 코드도 정상 작동합니다

두분 모두 감사합니다

새해 복 많이 받으세요~!

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

회원로그인

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