귀한 답변을 기다립니다.^^;

귀한 답변을 기다립니다.^^;

QA

귀한 답변을 기다립니다.^^;

본문

비슷한 질문을 올렸었는데 확실한 답을 얻지못해 다시 질문을 드립니다.;

 

x.co.kr/y.php  라는 문서가 있습니다.

 

여기에 x.co.kr/y.php?id=1234    이처럼 사이트 회원의 아이디(숫자로만 이뤄짐)​ 를 붙여서 해당 문서에

비로그인 상태 접근할 경우 문서 내에서 1234(회원아이디) 을 추출/저장 후, 회원DB와 대조해 존재하는 아이디라면

해당문서의 접근을 허용하고, 없는 아이디라면 다른 문서로 보내는 기능을 구현하고 싶습니다.


그리고 해당 문서 안에서 저장한 아이디 1234를 눈에 보이는 글자로도 출력하고자 하구요.


비로그인 상태에서의 회원DB 호출이 불가하다고 들은거 같은데.. 사실인지.. 또는 위의 기능구현이 불가능한지도

알고 싶네요.. 가능하다면.. 그리고 의뢰할만한 단가의 작업이라면 의뢰할만한 일이라고도 말씀을 주시면 고맙겠습니다.^^;

이 질문에 댓글 쓰기 :

답변 3

아~ 네...

질문내용에 문서 안에 대조할 아이디들이 있고, 그 아이디들 중 회원정보가 있다면 문서가 보여지게 해 달라는 내용으로 해석했습니다.

 

만약 문서안에 대조할 아이디들이 없고, 회원정보에서 확인만 한다면 더 간단합니다.

예시해 주신 소스를 바탕을 해 본다면

 

if ($id){ 
  $mb = get_member($id); 
  if ($mb['mb_id']) { // 회원정보가 있다면
        set_cookie('Cook_chu_id', $mb['mb_id'], 86400);
        alert("환영합니다. 아무개의 경로로 접속하셨습니다.", "$g5[path]/y.php");

   }else{ // 회원정보가 없다면

alert("존재하지 않는 회원입니다.", "이동할 주소");

   }

}

 

이렇게 하면 될 것 같습니다. 

저.. 정말 죄송한데 5레벨 이상 이라는 조건을 추가할 수 있을까요.. 제가 간과한 부분이 있어서요.
정말 죄송합니다.; 존재하는 회원이면서 5레벨 이상요;

if ($mb['mb_id'] $mb_level =< 5) { // 회원정보가 있다면
이렇게 하면 될까요..; 안되는군요..
if ($mb['mb_id'],$mb['mb_level'] where mb_level =< 5) { // 회원정보가 있다면
이렇게 해도 안되네요.ㅎ;
if ($mb['mb_id']) || ($mb['mb_level']>=5) { // 회원정보가 있다면
if ($mb['mb_id']) || ($result[mb_level]>=5) { // 회원정보가 있다면
이것도 아니고... 계속 찾아봐야겠네요

ㅎㅎ
if ($member['mb_level'] == 5){  이거 한 줄 따로 추가해주니 되는거 같은데 맞나 모르겠네요ㅎ
}
여튼 감사했습니다.^^

한줄 따로 추가하시 마시고
if ($mb['mb_id'] && $member[mb_level] =<5)  이렇게 해 주시면 됩니다.

그런데 비회원이 접근했을때 문서를 보여주는 것 아니였나요?
위와 같이 하면 비회원이 접근했을때는 문서를 보여주지 못하고 로그인 한 회원중 레벨 5이상만 접근이 가능 합니다.

혹시 x.co.kr/y.php?id=1234  일때 db에 저장된 1234의 아이디의 레벨이 5 이상이라면
if ($mb['mb_id'] && $mb[mb_level] =<5)

이렇게 하십시요..... ^^

마무리 답변까지 주셔서 정말 감사합니다.
근데 이상하게 제가 마지막으로 적용한 소스대로 해도 비회원 접근은 가능하더라구요.
아니라고 하시니.. 저도 뭐 이유를 알 수는 없지만요..ㅎ  그래도 정리해주신 소스로
감사히 잘 적용해 쓰겠습니다. 감사합니다!

사용하시는 게 그누보드라는 전제하에.

if($id) {

$mb=get_member($id);

if($mb) { 접근허용 } else {다른 페이지로 이동하세요}

}

 

이런 형태로 하시면 되지 않을까요?

 

 

<?php

// y.php 문서 상단에 작성 시작

if ($id) {

 $url=G5_PATH."/y.php"; // 그누보드 안에 있다고 가정하고...

 $pass=strip_tags(file_get_contents($url));  //  테그가 있다면 제거

           if (preg_match("/$id/", $pass)) {

$mem=get_member($id);

if (!$mem[mb_id]) {

문서에 아이디가 있으나 회원정보에 없으면 보여줄 다른 문서로 이동

}

}else{

문서에 아이디가 없다면 보여줄 다른 문서로 이동

}

}

// y.php 문서 상단에 작성 끝

?>

<html> 

아래 문서에 아이디가 있고 회원정보가 있다면 보여줄 문서와

아이디들

</html> 

 

-------------------------

<?php echo $id?>  ☜해당 문서 안에서 저장한 아이디 1234를 눈에 보이는 글자로도 출력하고자 하는 위치 넣어 주시면 됩니다.

 

단, 주의해야 할 점은

문서안에 아이디 1234 만 있을 경우에도 123 혹은 234 등도 있다고 체크 되므로

아이디를 구분하는 것이 좋을 듯합니다.

즉 :1234:3245:3234: 등으로 구분 지은후,

if (preg_match("/$id/", $pass)) 는

if (preg_match("/:$id:/", $pass)) 이렇게 하시면 좋을 것 같습니다.

아이디와 아이디사이에 공백을 넣는 다면

if (preg_match("/ $id /", $pass)) 와 같이  $id  사이에 공백으로 처리합니다.

 

참고로

비로그인 상태에서의 회원DB 호출이 가능합니다.

 

 

질문 내용을 해석하기가 좀 애매하여

제가 해석한 내용대로 작성했는데, 맞게 해석했는지 모르겠습니다.

 

정성들여 주신 답변 감사드립니다.ㅎ; 질문내용이 완전하게 전달이 되지 않은듯해서 한 번만 더 여쭙겠습니다.ㅠ;
적용도 한 번 해봤는데.. 접속주소에서 숫자를 추출하는지.. 추출한 숫자를 DB와 대조를 하는건지 판단이 안되네요.
DB에 존재하는 아이디 인데도 무조건 다른페이지로 넘어가네요. 우선..
y.php 문서는 회원이든 비회원이든 기본적으로 볼 수는 있습니다.
단, y.php?id=1234 이런식으로, 문서 뒤에 해당 사이트에 가입된 회원의 id를 붙였을 때, 뒤에붙은 1234 라는
아이디가 DB에 있는지 없는지만 판단해서 문서를 보여줄지 말지를 결정하려는 것이었어요..

혹시 적어주신 코드는 y.php 문서 안에 대조할 아이디 목록이 있어야만 동작하는 것인가요?
그리고 접속 주소에서 끝에 숫자부분만 추출해 대조를 정상적으로 하는 코드인지 다시 한 번 여쭤봅니다.
문서 내부에 임의로 회원 아이디를 나열해주고 위 코드를 사용하면 어쨌든 접속허용 여부는 구현이 될거
같은데.. 문서 내부에 대조할 아이디 목록을 어떻게 나열하는지 모르겠네요.;

기존에 사용중인 소스가 있긴 하지만 접속주소에서 뒤에 숫자만 추출할 뿐..
회원DB와 연동이 안되어 뒤에 붙은 숫자가, 존재하는 회원의 아이디일 경우에만 문서를 보여주고 싶은 목적을
구현하지 못하고 있는 상태입니다. 소스 남겨봅니다. 전에 어떤분이 의미없는 소스가 포함되어 있다고도 하더군요.
정확히 뭔지 몰라서 그냥 쓰고 있습니다.^^;

$chuid = "$id";
if ($chuid){
 $mb_id = trim($chuid);
 $member = get_member($mb_id);
 
set_cookie('Cook_chu_id', $chuid, 86400);
//alert("환영합니다. 아무개의 경로로 접속하셨습니다.", "$g5[path]/y.php");
}

if ($w == "" && $config['cf_use_recommend']) {
$Order_chu_Cookie = get_cookie("Cook_chu_id");

위 코드처럼 접속주소에서 뒷 부분 숫자만 추출하는 것에서.. 그걸 회원DB와 대조해 존재하면 환영합니다. 없다면
존재하지 않는 회원입니다.다른데로가세요.. 이런 기능으로요...ㅎ; 단번에 제가 잘 응용했으면 좋았을텐데.. 실례되게
다시 질문드리게 됐네요..;;

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

회원로그인

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