안녕하세요, 첫 글부터 질문 글이라니 참 부끄럽네요...

고수님들의 도움을 구하고자 끄적여봅니다.

 

현재 URL 패러미터를 닉네임으로 받아서,

그 닉네임을 회원번호로 전환한 후,

포인트 관련해서 이것저것 끄적여보고 있습니다.

 

닉네임을 회원번호로 받아오려면 DB에서 받아와야 할텐데,

방법이 있나요?

 

 

제가 할줄 아는 것 내에서는 URL 패러미터를 받아서,

현재 로그인한 회원 닉네임과 일치하는가를 확인하는것 밖에 없네요 ㅠㅠ

 

// URL 패러미터 받아서 처리
$stn_nick = $_GET['stn'];


// 닉네임 일치하나 확인
if (($logged_info->nick_name) == $stn_nick) {
  echo "신원확인 끝!";
}
else {
  echo "엥? 누구세요?";
}

 

지금 이런식으로 외부 PHP 파일을 만들고 있습니다..

 

어이없을 정도로 간단할수도 있지만 워낙 초보라.. 부탁드립니다 ㅠㅠ

  • Lv15
    xe에는 닉네임가지고 회원정보를 가져오는 함수? 변수?는 없는 것 같습니다.

    https://xe1.xpressengine.com/qna/19103617
    고유번호를 가지고 다른 정보를 가져오는 방법

    https://github.com/xpressengine/xe-core/tree/master/modules/member/queries
    (getMemberInfo로 시작하는 쿼리문들을 보세요.)
    회원정보에서 고유값이라고 볼수 있는 아이디, 고유번호, 이메일로만 가져오네요.

    getMemberInfoByMemberSrl.xml
    요 파일을 응용해서

    getMemberInfoByNickName.xml

    <query id="getMemberInfoByNickName" action="select">
    <tables>
    <table name="member" />
    </tables>
    <columns>
    <column name="*" />
    </columns>
    <conditions>
    <condition operation="equal" column="nick_name" var="nick_name" notnull="notnull" />
    </conditions>
    </query>

    요런 파일을 만들어서 쿼리 폴더에 넣고

    $oMemberModel = &getModel('member');
    $member_info = $oMemberModel->getMemberInfoByNickName(닉네임변수);
    $회원번호변수 = $member_info->member_srl

    요렇게 하면 되지 않을가 하는데...

    xe에 쿼리문 추가하는게 저렇게만 넣으면 되는지, 모듈의 다른 부분을 수정해야 하는지까지는 모르겠습니다.
    xe는 대강 유져라서요.



    이게 안되면 db를 직접 쿼리해서 member_srl을 찾아야 할 듯 합니다.
  • Lv15 Lv37
    있습니다.

    $member_srl = $oMemberModel->getMemberSrlByNickName($nick_name);

    여기에 getMemberInfoByMemberSrl을 조합하면 다른 회원정보도 다 불러올 수 있어요.
  • Lv15 Lv5
    • Rixx
    • 질문기여자
    답변 감사합니다!

    쿼리가 저런식으로 들어있었군요..
    한번 해봤는데, 역시 호락호락하지 않습니다 ㅋㅋ

    하지만 실마리를 잡았으니 뭔가 나오겠죠?
    혹시 방법을 찾게되면 여기 댓글로 올릴게요 :)
  • Lv37 Lv5
    • Rixx
    • 질문기여자

    어.. 읽고 대댓글 쓰는동안 댓글이 또 달렸군요 ㅋㅋ
    기진곰님께서 말씀하신것도 해보고 올게요!

     

    수정: 완전 잘되네요.. 헐..! 감사합니다!

  • Lv37 Lv15
    역시 대강 유저라서 대강 살펴 봤더니 잘못된 정보를 남길 뻔 했네요!!
    정정해주셔서 감사합니다~^^
  • Lv15 Lv37
    제안하신 것처럼 닉네임만으로 회원정보를 한번에 불러올 수 있는 함수가 있다면 편리하긴 하겠네요. 지금은 member_srl만 불러올 수 있으니...
  • Lv37 Lv15
    닉네임은 중복으로 등록이 안되던가요?
    중복이 안된다면 있으면 한단계를 줄일수 있겠네요.
    뭐 member_srl만 불러오면 한단계 더 거쳐서 그걸로 다 할 수 있으니 방법이 없는 건 아니니까요~^^
  • Lv15 Lv37
    XE에서는 닉네임 중복 안됩니다. 라이믹스에서도 안되는 게 기본이고, 구석에 꼭꼭 숨겨져 있는 옵션을 켜면 억지로 허용할 수는 있어요. 물론 닉네임 중복이 허용된 상태에서는 닉네임으로 회원정보를 불러올 때 조심해야겠지요.
  • Lv37 Lv15
    일단 소스코드를 수정하지 않고 허용할수 있는 옵션이 어딘가에 있다면 주의해야 하겠네요.
    회원수가 많은 커뮤니티라면 두가지를 동시에 사용하면 안되겠어요.
  • Lv37

    // XE에서는 $_GET, $_POST 등에 직접 접근하지 않고 Context를 사용합니다.

    $nick_name = Context::get('stn');

     

    // 회원 모델을 불러와서, 닉네임을 member_srl로 변환합니다.

    $oMemberModel = getModel('member');

    $member_srl = $oMemberModel->getMemberSrlByNickName($nick_name);

     

    그런데 원글에 쓰신 것처럼 현재 로그인한 사용자와 일치하는지 확인하는 과정이 있다면

    그냥 현재 로그인한 사용자의 $logged_info->member_srl을 사용하셔도 되고요.

  • Lv37 Lv5
    • Rixx
    • 질문기여자
    context라는 녀석이 있었군요!
    요것도 적용해서 더 깔끔하게 만들어야겠습니다.
    답변 감사합니다!