[제로] 수정된 정보를 제대로 보여주기
페이지 정보

짧은주소
-
https://yadolee.com/tip/42 주소복사
평점
본문
. 우선, lib.php 파일에 다음과 같은 함수를 추가시켜 줍니다. 위치는 아무데나 상관이 없구요, 저는 편의상 게시판 관리자인지 체크하는 부분, 즉 function check_board_master($member, $board_num) 바로 위에 추가해 주었습니다.
// 시작
// 멤버 테이블의 email, homepage, name 체크
function get_email_homepage($data) {
global $connect;
// 데이터베이스 연결
if (!$connect) $connect=dbconn();
// 멤버인 경우, 멤버 테이블 정보로 대체
if($data[ismember]) {
// 쿼리. $email_homepage_temp[0]=이메일 공개여부,[1]=홈페이지 공개여부,[2]=이메일,[3]=홈페이지,[4]=이름
$email_homepage_temp=mysql_fetch_row(mysql_query("select open_email,open_homepage,email,homepage,name from zetyx_member_table where no={$data[ismember]}"));
// 이메일 공개면 show, 아니면 hide
if ($email_homepage_temp[0]) {
$email_homepage[0] = $email_homepage_temp[2];
} else {
$email_homepage[0] = "";
}
// 홈페이지 공개면 show, 아니면 hide
if ($email_homepage_temp[1]) {
$email_homepage[1] = $email_homepage_temp[3];
} else {
$email_homepage[1] = "";
}
// 이름 show
$email_homepage[2] = $email_homepage_temp[4];
}
// 멤버가 아닌 경우 기존 게시판 테이블 정보로 유지
else {
$email_homepage[0] = $data[email];
$email_homepage[1] = $data[homepage];
$email_homepage[2] = $data[name];
}
return $email_homepage;
}
// 끝
간단하게 설명하자면, 회원인 경우 이메일, 홈페이지 공개 여부를 우선 알아보고 그에 따라서 멤버 테이블의 이메일, 홈페이지 정보를 가져오게 합니다. 비회원의 경우에는 게시판 테이블에 기록된 이메일, 홈페이지 정보를 그냥 사용합니다.
한가지 덧붙이자면, 여기서 회원/비회원의 구분은 순전히 작성자가 글을 올릴 당시 회원 가입, 로그인을 한 상태였는지 또는 로그아웃 상태였는지에 따릅니다. 따라서, 누군가 비회원/로그아웃 상태에서 글을 올린 이후에 회원가입/로그인을 하였더라도, 당연한 말이지만 그가 예전에 올린 글은 여전히 비회원의 글로 남습니다.
2. 이제 앞서 작성한 함수를 서브레이어 호출 직전에 사용해 주면 됩니다. 작성자의 정보를 불러오는 서브레이어 호출부분은 include/list_check.php 파일에 있는데, 거기서 $data[email] 과 $data[homepage] 그리고 $data[name] 부분을 위 함수를 이용해서 수정 후 출력해 주면 되는 거죠.
이건 아무데나 넣어주면 안되고, function list_check(&$data, $view_check=0) 안에 포함시켜 주어야 합니다. $_listCheckTimeStart = getmicrotime(); 바로 다음에 추가시켜 주시기 바랍니다. 저의 경우 20번쨰 라인에 해당하더군요.
// 시작
// 회원은 멤버 테이블의 정보로 대체
// 비회원은 게시판 테이블의 정보 유지
$email_homepage=get_email_homepage($data);
$data[email] = $email_homepage[0];
$data[homepage] = $email_homepage[1];
$data[name] = $email_homepage[2];
// 끝
다 되었습니다. 이제 게시판 내 작정자 정보 서브레이어를 클릭하면, 작성자가 회원인 경우 해당 멤버 테이블의 데이터로 보여질겁니다. 이 때 기존에 게시판 테이블에 작성된 회원정보는 무시됩니다. 비회원인 경우 종전처럼 게시판 테이블의 정보를 가져오겠죠?
3. 이건 옵션입니다. 간혹 이메일 링크, 홈페이지 링크를 서브레이어를 통하지 않고 게시판 내에서 바로 클릭할 수 있도록 만들어진 스킨이 있습니다. 이 때 홈페이지 링크는 잘 보이는데 이메일 링크만 안보이는 경우가 있습니다. 아무리 회원이 자기 이메일 정보를 공개로 설정해 놓아도, 또 비회원인 경우 글작성시 이메일 주소를 제대로 입력했어도 결과는 마찬가지인 경우, 다음과 같이 include/list_check.php 파일을 한 줄 더 수정해 줍니다. 그 파일 맨 아랫부분에 보면,
// 스팸메일러 금지
$mail=$data[email]="";
과 같이 되어 있는 부분이 보일겁니다. 이 부분을 주석처리 해 줍니다. 즉,
// 스팸메일러 금지
//$mail=$data[email]="";
// 시작
// 멤버 테이블의 email, homepage, name 체크
function get_email_homepage($data) {
global $connect;
// 데이터베이스 연결
if (!$connect) $connect=dbconn();
// 멤버인 경우, 멤버 테이블 정보로 대체
if($data[ismember]) {
// 쿼리. $email_homepage_temp[0]=이메일 공개여부,[1]=홈페이지 공개여부,[2]=이메일,[3]=홈페이지,[4]=이름
$email_homepage_temp=mysql_fetch_row(mysql_query("select open_email,open_homepage,email,homepage,name from zetyx_member_table where no={$data[ismember]}"));
// 이메일 공개면 show, 아니면 hide
if ($email_homepage_temp[0]) {
$email_homepage[0] = $email_homepage_temp[2];
} else {
$email_homepage[0] = "";
}
// 홈페이지 공개면 show, 아니면 hide
if ($email_homepage_temp[1]) {
$email_homepage[1] = $email_homepage_temp[3];
} else {
$email_homepage[1] = "";
}
// 이름 show
$email_homepage[2] = $email_homepage_temp[4];
}
// 멤버가 아닌 경우 기존 게시판 테이블 정보로 유지
else {
$email_homepage[0] = $data[email];
$email_homepage[1] = $data[homepage];
$email_homepage[2] = $data[name];
}
return $email_homepage;
}
// 끝
간단하게 설명하자면, 회원인 경우 이메일, 홈페이지 공개 여부를 우선 알아보고 그에 따라서 멤버 테이블의 이메일, 홈페이지 정보를 가져오게 합니다. 비회원의 경우에는 게시판 테이블에 기록된 이메일, 홈페이지 정보를 그냥 사용합니다.
한가지 덧붙이자면, 여기서 회원/비회원의 구분은 순전히 작성자가 글을 올릴 당시 회원 가입, 로그인을 한 상태였는지 또는 로그아웃 상태였는지에 따릅니다. 따라서, 누군가 비회원/로그아웃 상태에서 글을 올린 이후에 회원가입/로그인을 하였더라도, 당연한 말이지만 그가 예전에 올린 글은 여전히 비회원의 글로 남습니다.
2. 이제 앞서 작성한 함수를 서브레이어 호출 직전에 사용해 주면 됩니다. 작성자의 정보를 불러오는 서브레이어 호출부분은 include/list_check.php 파일에 있는데, 거기서 $data[email] 과 $data[homepage] 그리고 $data[name] 부분을 위 함수를 이용해서 수정 후 출력해 주면 되는 거죠.
이건 아무데나 넣어주면 안되고, function list_check(&$data, $view_check=0) 안에 포함시켜 주어야 합니다. $_listCheckTimeStart = getmicrotime(); 바로 다음에 추가시켜 주시기 바랍니다. 저의 경우 20번쨰 라인에 해당하더군요.
// 시작
// 회원은 멤버 테이블의 정보로 대체
// 비회원은 게시판 테이블의 정보 유지
$email_homepage=get_email_homepage($data);
$data[email] = $email_homepage[0];
$data[homepage] = $email_homepage[1];
$data[name] = $email_homepage[2];
// 끝
다 되었습니다. 이제 게시판 내 작정자 정보 서브레이어를 클릭하면, 작성자가 회원인 경우 해당 멤버 테이블의 데이터로 보여질겁니다. 이 때 기존에 게시판 테이블에 작성된 회원정보는 무시됩니다. 비회원인 경우 종전처럼 게시판 테이블의 정보를 가져오겠죠?
3. 이건 옵션입니다. 간혹 이메일 링크, 홈페이지 링크를 서브레이어를 통하지 않고 게시판 내에서 바로 클릭할 수 있도록 만들어진 스킨이 있습니다. 이 때 홈페이지 링크는 잘 보이는데 이메일 링크만 안보이는 경우가 있습니다. 아무리 회원이 자기 이메일 정보를 공개로 설정해 놓아도, 또 비회원인 경우 글작성시 이메일 주소를 제대로 입력했어도 결과는 마찬가지인 경우, 다음과 같이 include/list_check.php 파일을 한 줄 더 수정해 줍니다. 그 파일 맨 아랫부분에 보면,
// 스팸메일러 금지
$mail=$data[email]="";
과 같이 되어 있는 부분이 보일겁니다. 이 부분을 주석처리 해 줍니다. 즉,
// 스팸메일러 금지
//$mail=$data[email]="";
추천인

레벨 99
경험치 1,478,262
Progress Bar 77.32%
- 가입일 : 2015-03-04 03:24:54
- 서명 : KNOW YOUR LIMITS
BUT NEVER STOP TRYING TO EXCEED THEM !!
- 자기소개 : 루루의 자랑
루루아빠랍니다~~
-
[배경 화면] 프랑스의 에귀으 듀 샤흐도네(Aiguille du Chardonnet)산으로 스위스와 접경지에 위치해 있습니다. /*0) generatedType=2; if (generatedType==2) { dMap.style.cursor = "pointer"; dMap.onclick = function(e) {initGmapsLoader(e||event)}; var t = document.createTextNode("로딩하려면 클릭하세요"), d = document.createElement("div"); d.appendChild(t); d.style.cssText="background-color:#e5e5e5; filter:alpha(opacity=80); opacity:0.8; padding:1em; font-weight:bold; text-align:center; position:absolute; left:0; box-sizing:border-box; width:100%; max-width:500px; top:0"; dMap.appendChild(d); } function CreateGMapgmap202421141257() { var dMap = document.getElementById("gmap202421141257"); if (dMap) dMap = dMap.parentNode; else dMap = document.getElementById("wgmap202421141257"); if (!dMap) return; if (dMap.ckemap) { var map = dMap.ckemap.map, center = map.getCenter(); google.maps.event.trigger(map, "resize"); map.setCenter(center); return; } dMap.onclick = null; var mapOptions = { zoom: 11, center: [45.96864,7.00157], mapType: 0, zoomControl: "Default", mapsControl: "Default", heading: 0, tilt: 0, overviewMapControlOptions: {opened:true}, pathType: "Default", googleBar: false }; var myMap = new CKEMap(dMap, mapOptions); dMap.ckemap=myMap; } if (!window.gmapsLoaders) window.gmapsLoaders = []; window.gmapsLoaders.push(CreateGMapgmap202421141257); if (generatedType==3) window.gmapsAutoload=true; window.gmapsKey="AIzaSyApiu_e4Br_dRpB-RNC3XgioygMilKhadA"; /*]]>*/ /* CK googlemapsEnd v3.6 */2024-03-05
-
[공지사항] 특별한 버그가 발견되지 않으면 공개하도록 하겠습니다.2024-01-23
-
[공지사항] 한가지를 빼먹었습니다 사운드클라우드도 썸네일을 생성합니다 사운드클라우드는 meta tag > og:image > content의 url를 통해 이미지를 추출2023-05-05
-
[공지사항] 제법 추가해야 할 소스가 많습니다 또한 외부 프로그램(php exec 함수 이용)도 필요해요 ffmpeg, youtube-dl, twitter-media-downloader 간략하게 설명을 드려 볼게요 twitter-media-downloader은 트위터 트윗 이미지를 추출하는 용도 youtube-dl은 트위터 트윗 이미지 및 동영상 url, 페이스북 watch 동영상 url를 추출하는 용도 ffmpeg는 페이스북 watch의 동영상 url를 이용해 포스터 이미지를 추출하는 용도 인스타그램은 meta tag > og:image > content의 url를 통해 이미지를 추출 그 이미지를 게시판 설정 크기로 썸네일화하기2023-05-04
-
[공지사항] 네 맞습니다. Tagify 기능이 훌륭해 변경해 놓았습니다. 한번 적용해 보세요.2022-12-25
-
[영어 문법] 7년 전 게시되었을 때에는 재생에 문제가 없었던 것으로 기억하고 있었으나 현재에는 재생 목록 파라미터가 변경된 걸로 확인했습니다. 수정완료하였으며 3000점의 경험치를 제공해 드렸습니다. 오류 제보 감사드립니다.2022-12-04
-
[공지사항] 공지와 연관되지 않는 댓글은 자제 부탁드립니다.2022-12-03
-
[공지사항] SortableJS를 이용했습니다. https://inpa.tistory.com/entry/%EB%93%9C%EB%9E%98%EA%B7%B8-%EC%95%A4-%EB%93%9C%EB%A1%AD-Drag-Drop-%EA%B8%B0%EB%8A%A5 {코드} https://github.com/SortableJS/Sortable {코드}위 두 링크를 참조해 보세요.2022-11-27
댓글1
야돌이님의 댓글