Extra Form
PHP PHP 7.2
CMS XpressEngine

특정 조건에 글읽기 등 페이지 접근을 제한해 놓은 애드온이 있습니다.

 

그런데 쪽지에서 링크를 클릭하고 접근을 하는 경우는 애드온에서 제한하는 코드 위쪽에서 리턴을 시도해 보려고 합니다.

 

 

저희 사이트 쪽지 읽는 화면의 url은 /index.php?act=dispCommunicationMessages&mid=main&message_srl=2291744

 

이렇게 처리 되고 있습니다.

 

이 주소의 컨텐츠(쪽지) 에 특정 글로 이동하는 링크가 있습니다.

 

그런데 이 링크를 클릭하고 이동하게 될 경우 해당 글을 애드온에서 제한하지 않으려 합니다.

 

 

  • profile

    // 리퍼러 URL에서 act, message_srl 등의 파라미터들을 추출

    // $args는 미리 선언할 필요 없어요. 반환값도 없어요. 이상한 형태로 호출되는 함수입니다;;;

    parse_str(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY), $args);

     

    // 쪽지읽기 화면에서 왔는지 확인

    if($args['act'] == 'dispCommunicationMessages' && !empty($args['message_srl']))

    {

        // 예외처리(리턴 등)

    }

  • profile profile
    db에 쿼리 하는 경우가 아닌 경우도 $args 와 같은 것을 사용하나보네요 ?
    답변 감사합니다. 완전 바로 사용할 수 있게 작성해주셔서 너무 감사합니다.
  • profile profile
    감사합니다. 잘 적용했습니다.

    쪽지를 읽지 않으면 컨텐츠들 열람을 제한하는 애드온을 사용중인데요.


    특정 글의 댓글이 추천을 받았다고 쪽지로 보내주는데 여러개의 추천을 받으면 쪽지가 여러개가 도착해 있어 해당 쪽지에서 제시하는 추천된 댓글로 이동시 다른 쪽지를 열람하지 않은 상황이라 어떤 댓글이 추천받았는지 확인에 불편이 생겨서 질문하게 되었습니다.

    제대로 반영이 되어 쪽지로 받은 안내 링크로 이동은 제한되지 않을 수 있게 처리 되었습니다.
  • profile profile

    변수 이름은 다른 것과 겹치지만 않으면 아무거나 써도 상관없습니다.

    $args = 함수(값1, 값2); 이렇게 함수의 반환값을 변수에 담는 것이 가장 자연스러울 텐데, parse_str 함수는 20여년 전 잘못 설계된 탓에;;; 결과를 받는 변수가 엉뚱하게도 맨 뒤에 붙습니다. 저렇게 쓰지 않으면 추출한 값들을 전역변수로 뿌려버리더군요. 오래된 함수들 중 이런 변태적인 것들이 왕왕 있어서 PHP가 욕을 먹지요 ㅎㅎ

  • profile profile
    아.. 그냥 변수 개념인데 임의로 제시해 주신 거군요.
    바로 아래쪽에 해당 변수를 사용하긴 합니다만..
    $args = new stdClass();

    로 초기화 해 주고 있으니 별 문제는 안되겠네요~~