회원정보 수정후 다음 페이지로 넘어가질 않습니다.
고민1>
주소는 :
아이디 : 333
패스워드 : 1
위 정보로 오그인 해서 들어가셔서 회원정보수정을 누르고 정보를 수정한 다음
<확인>을 누르게 되면 다음 페이지로 넘어기질 않습니다. 접속해 있던 페이지로 안가네요....
고민좀 해결해주세요~~
고민2>
그누보드 회원관리에 보니 하단에
<* 회원자료 삭제시 다른 회원이 기존 회원아이디를 사용하지 못하도록 회원아이디, 이름, 별명은 삭제하지 않고 영구 보관합니다. >
이렇게 나오는데, 동명이인이 가입하려고 하면 어떻게 되나요? 이름이 중복이라 가입이 안될텐데.....
고민3>
회원권한 설정에서(1-10) 값이 높으면 권한이 높은건지 낮은건지 모르겠습니다. 관리자는 10인가요?
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 9개
정상작동
/gnuboard4/index.php 최신글 라이브러리 누락
index.php의 최상단에 다음과 같은 라이브러리가 첨부되었는지 점검 필요.
include_once("$g4[path]/lib/latest.lib.php");
> 동명이인
동일한 이름은 존재할 수 있으므로 중복체크하지 않음.
> 회원권한
1(비회원), 2(일반회원), ... ,10(관리자)
첫번째>
회원가입후 로그인 된 상태에서 회원정보 수정을 누르면 정보수정 페이지로 넘어가는데 그곳에서 정보를 수정한 후 [확인]버튼을 누르면 새로운 값의 정보는 수정이 됩니다. <- 여기까지는 작동이 잘 됩니다.
그러나 확인 버튼을 누르면 계속 그 페이지에 머물러 있는데, 이것을 해결하고 싶습니다. (예를 들면 다시 http://sokas.cafe24.com/index.htm 으로)
++ include_once("$g4[path]/lib/latest.lib.php"); 는 index.php에 삽입 되어있습니다.
참고로 /gnuboard4/index.php는 저는 메인으로 쓰고 있지 않습니다. 로그아웃 하면 현재 http://sokas.cafe24.com/index.htm 으로 가게 되게 설정해 놓았는데, 이와같이 하고 싶습니다.
두번째>
동명인인 중복체크하지 않음. 이라고 하셨는데 어디서 해야하나요?
이것은 /tail.sub.php에서 끌어오는 /js/wrest.js의 각 루틴을 살펴볼 때,
회원 별명 체크와 아이디 체크, 이메일 체크등은 언급되어 있는 반면,
회원 이름에 대한 체크가 없다는 것을 지칭하게 됩니다.
회원정보 수정 후 페이지가 이동되지 않는 것은,
/bbs/register_form_update.php, /skin/membar/스킨이름/register~결과페이지 에서,
구체적인 액션(goto_url)등으로 처리되지 않았기 때문입니다.
스킨을 basic으로 변경한 후 현재 스킨과 비교하여 수정하십시오.
(1) 아직 같은 이름으로 가입할수 없고....ㅠㅠ.
(2)회원정보 수정 후 페이지가 이동되지 않는 문제도 해결하지 못하고 있습니다.(이래 저래 많이 찾아보았습니다..)
소스 파일을 올려봅니다(/bbs/register_form_update.php)
<?
include_once("./_common.php");
include_once("$g4[path]/lib/mailer.lib.php");
// 리퍼러 체크
referer_check();
if (!($w == "" || $w == "u"))
alert("w 값이 제대로 넘어오지 않았습니다.");
if ($w == "u" && $is_admin == "super") {
if (file_exists("$g4[path]/DEMO"))
alert("데모 화면에서는 하실(보실) 수 없는 작업입니다.");
}
// 자동등록방지 검사
include_once ("./norobot_check.inc.php");
$mb_id = trim(strip_tags($_POST[mb_id]));
$mb_password = trim($_POST[mb_password]);
$mb_name = trim(strip_tags($_POST[mb_name]));
$mb_nick = trim(strip_tags($_POST[mb_name]));
$mb_email = trim(strip_tags($_POST[mb_email]));
if ($w == '' || $w == 'u')
{
if (!$mb_id) alert('회원아이디가 넘어오지 않았습니다.');
if ($w == '' && !$mb_password) alert('패스워드가 넘어오지 않았습니다.');
if (!$mb_name) alert('이름(실명)이 넘어오지 않았습니다.');
if (!$mb_nick) alert('별명이 넘어오지 않았습니다.');
if (!$mb_email) alert('E-mail 이 넘어오지 않았습니다.');
if (preg_match("/[\,]?{$mb_id}/i", $config[cf_prohibit_id]))
alert("\'$mb_id\' 은(는) 예약어로 사용하실 수 없는 회원아이디입니다.");
if (preg_match("/[\,]?{$mb_nick}/i", $config[cf_prohibit_id]))
alert("\'$mb_nick\' 은(는) 예약어로 사용하실 수 없는 별명입니다.");
// 이름은 한글만 가능
if (!check_string($mb_name, _G4_HANGUL_))
alert('이름은 공백없이 한글만 입력 가능합니다.');
// 별명은 한글, 영문, 숫자만 가능
if (!check_string($mb_nick, _G4_HANGUL_ + _G4_ALPHABETIC_ + _G4_NUMERIC_))
alert('별명은 공백없이 한글, 영문, 숫자만 입력 가능합니다.');
if ($w=='')
{
if ($mb_id == $mb_recommend) alert('본인을 추천할 수 없습니다.');
$sql = " select count(*) as cnt from $g4[member_table] where mb_nick = '$mb_nick' ";
$row = sql_fetch($sql);
if ($row[cnt])
alert("\'$mb_nick\' 은(는) 이미 다른분이 사용중인 별명이므로 사용이 불가합니다.");
$sql = " select count(*) as cnt from $g4[member_table] where mb_email = '$mb_email' ";
$row = sql_fetch($sql);
if ($row[cnt])
alert("\'$mb_email\' 은(는) 이미 다른분이 사용중인 E-mail이므로 사용이 불가합니다.");
}
else
{
// 자바스크립트로 정보변경이 가능한 버그 수정
// 별명수정일이 지나지 않았다면
if ($member[mb_nick_date] > date("Y-m-d", $g4[server_time] - ($config[cf_nick_modify] * 86400)))
$mb_nick = $member[mb_nick];
// 회원정보의 메일을 이전 메일로 옮기고 아래에서 비교함
$old_email = $member[mb_email];
$sql = " select count(*) as cnt from $g4[member_table] where mb_nick = '$mb_nick' and mb_id <> '$mb_id' ";
$row = sql_fetch($sql);
if ($row[cnt])
alert("\'$mb_nick\' 은(는) 이미 다른분이 사용중인 별명이므로 사용이 불가합니다.");
$sql = " select count(*) as cnt from $g4[member_table] where mb_email = '$mb_email' and mb_id <> '$mb_id' ";
$row = sql_fetch($sql);
if ($row[cnt])
alert("\'$mb_email\' 은(는) 이미 다른분이 사용중인 E-mail이므로 사용이 불가합니다.");
}
}
$mb_dir = "$g4[path]/data/member/".substr($mb_id,0,2);
// 아이콘 삭제
if ($del_mb_icon)
@unlink("$mb_dir/$mb_id.gif");
$msg = "";
// 아이콘 업로드
$mb_icon = "";
if (is_uploaded_file($_FILES[mb_icon][tmp_name]))
{
if (preg_match("/(\.gif)$/i", $_FILES[mb_icon][name]))
{
// 아이콘 용량이 설정값보다 이하만 업로드 가능
if ($_FILES[mb_icon][size] <= $config[cf_member_icon_size])
{
@mkdir($mb_dir, 0707);
@chmod($mb_dir, 0707);
$dest_path = "$mb_dir/$mb_id.gif";
move_uploaded_file($_FILES[mb_icon][tmp_name], $dest_path);
chmod($dest_path, 0606);
if (file_exists($dest_path))
{
$size = getimagesize($dest_path);
// 아이콘의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 아이콘 삭제
if ($size[0] > $config[cf_member_icon_width] || $size[1] > $config[cf_member_icon_height])
@unlink($dest_path);
}
}
}
else
$msg .= $_FILES[mb_icon][name] . "은(는) gif 파일이 아닙니다.";
}
// 관리자님 회원정보
$admin = get_admin('super');
if ($w == "")
{
$mb = get_member($mb_id);
if ($mb[mb_id])
alert("이미 가입한 아이디입니다.");
$sql = " insert into $g4[member_table]
set mb_id = '$mb_id',
mb_password = '".sql_password($mb_password)."',
mb_name = '$mb_name',
mb_jumin = '$mb_jumin',
mb_sex = '$mb_sex',
mb_birth = '$mb_birth',
mb_nick = '$mb_nick',
mb_nick_date = '$g4[time_ymd]',
mb_password_q = '$mb_password_q',
mb_password_a = '$mb_password_a',
mb_email = '$mb_email',
mb_homepage = '$mb_homepage',
mb_tel = '$mb_tel',
mb_hp = '$mb_hp',
mb_zip1 = '$mb_zip1',
mb_zip2 = '$mb_zip2',
mb_addr1 = '$mb_addr1',
mb_addr2 = '$mb_addr2',
mb_signature = '$mb_signature',
mb_profile = '$mb_profile',
mb_today_login = '$g4[time_ymdhis]',
mb_datetime = '$g4[time_ymdhis]',
mb_ip = '$_SERVER[REMOTE_ADDR]',
mb_level = '$config[cf_register_level]',
mb_recommend = '$mb_recommend',
mb_login_ip = '$_SERVER[REMOTE_ADDR]',
mb_mailling = '$mb_mailling',
mb_sms = '$mb_sms',
mb_open = '$mb_open',
mb_open_date = '$g4[time_ymd]',
mb_1 = '$mb_1',
mb_2 = '$mb_2',
mb_3 = '$mb_3',
mb_4 = '$mb_4',
mb_5 = '$mb_5',
mb_6 = '$mb_6',
mb_7 = '$mb_7',
mb_8 = '$mb_8',
mb_9 = '$mb_9',
mb_10 = '$mb_10' ";
// 이메일 인증을 사용하지 않는다면 이메일 인증시간을 바로 넣는다
if (!$config[cf_use_email_certify])
$sql .= " , mb_email_certify = '$g4[time_ymdhis]' ";
sql_query($sql);
// 회원가입 포인트 부여
insert_point($mb_id, $config[cf_register_point], "회원가입 축하", '@member', $mb_id, '회원가입');
// 추천인에게 포인트 부여
if ($config[cf_use_recommend] && $mb_recommend)
insert_point($mb_recommend, $config[cf_recommend_point], "{$mb_id}의 추천인", '@member', $mb_recommend, "{$mb_id} 추천");
// 회원님께 메일 발송
if ($config[cf_email_mb_member])
{
$subject = "회원가입을 축하드립니다.";
$mb_md5 = md5($mb_id.$mb_email.$g4[time_ymdhis]);
$certify_href = "$g4[url]/$g4[bbs]/email_certify.php?mb_id=$mb_id&mb_md5=$mb_md5";
ob_start();
include_once ("./register_form_update_mail1.php");
$content = ob_get_contents();
ob_end_clean();
mailer($admin[mb_nick], $admin[mb_email], $mb_email, $subject, $content, 1);
}
// 최고관리자님께 메일 발송
if ($config[cf_email_mb_super_admin])
{
$subject = $mb_nick . " 님께서 회원으로 가입하셨습니다.";
ob_start();
include_once ("./register_form_update_mail2.php");
$content = ob_get_contents();
ob_end_clean();
mailer($mb_nick, $mb_email, $admin[mb_email], $subject, $content, 1);
}
// 메일인증 사용하지 않는 경우에만 로그인
if (!$config[cf_use_email_certify])
set_session("ss_mb_id", $mb_id);
set_session("ss_mb_reg", $mb_id);
}
else if ($w == "u")
{
if (!trim($_SESSION["ss_mb_id"]))
alert("로그인 되어 있지 않습니다.");
if ($_SESSION["ss_mb_id"] != $_POST[mb_id])
alert("로그인된 정보와 수정하려는 정보가 틀리므로 수정할 수 없습니다.\\n\\n만약 올바르지 않은 방법을 사용하신다면 바로 중지하여 주십시오.");
$sql_password = "";
if ($mb_password)
$sql_password = " , mb_password = '".sql_password($mb_password)."' ";
$sql_icon = "";
if ($mb_icon)
$sql_icon = " , mb_icon = '$mb_icon' ";
$sql_nick_date = "";
if ($mb_nick_default != $mb_nick)
$sql_nick_date = " , mb_nick_date = '$g4[time_ymd]' ";
$sql_open_date = "";
if ($mb_open_default != $mb_open)
$sql_open_date = " , mb_open_date = '$g4[time_ymd]' ";
$sql_sex = "";
if (isset($mb_sex))
$sql_sex = " , mb_sex = '$mb_sex' ";
// 이전 메일주소와 수정한 메일주소가 틀리다면 인증을 다시 해야하므로 값을 삭제
$sql_email_certify = "";
if ($old_email != $mb_email && $config[cf_use_email_certify])
$sql_email_certify = " , mb_email_certify = '' ";
// set mb_name = '$mb_name', 제거
$sql = " update $g4[member_table]
set mb_nick = '$mb_nick',
mb_password_q = '$mb_password_q',
mb_password_a = '$mb_password_a',
mb_mailling = '$mb_mailling',
mb_sms = '$mb_sms',
mb_open = '$mb_open',
mb_email = '$mb_email',
mb_homepage = '$mb_homepage',
mb_tel = '$mb_tel',
mb_hp = '$mb_hp',
mb_zip1 = '$mb_zip1',
mb_zip2 = '$mb_zip2',
mb_addr1 = '$mb_addr1',
mb_addr2 = '$mb_addr2',
mb_signature = '$mb_signature',
mb_profile = '$mb_profile',
mb_1 = '$mb_1',
mb_2 = '$mb_2',
mb_3 = '$mb_3',
mb_4 = '$mb_4',
mb_5 = '$mb_5',
mb_6 = '$mb_6',
mb_7 = '$mb_7',
mb_8 = '$mb_8',
mb_9 = '$mb_9',
mb_10 = '$mb_10'
$sql_password
$sql_icon
$sql_nick_date
$sql_open_date
$sql_sex
$sql_email_certify
where mb_id = '$_POST[mb_id]' ";
sql_query($sql);
// 인증메일 발송
if ($old_email != $mb_email && $config[cf_use_email_certify])
{
$subject = "인증확인 메일입니다.";
$mb_md5 = md5($mb_id.$mb_email.$member[mb_datetime]);
$certify_href = "$g4[url]/$g4[bbs]/email_certify.php?mb_id=$mb_id&mb_md5=$mb_md5";
ob_start();
include_once ("./register_form_update_mail3.php");
$content = ob_get_contents();
ob_end_clean();
mailer($admin[mb_nick], $admin[mb_email], $mb_email, $subject, $content, 1);
}
}
// 사용자 코드 실행
@include_once ("$g4[path]/skin/member/$config[cf_member_skin]/register_update.skin.php");
if ($msg)
echo "<script language='JavaScript'>alert('{$msg}');</script>";
if ($w == "")
goto_url("./register_result.php");
else if ($w == "u")
{
if ($mb_password)
$tmp_password = $mb_password;
else
$tmp_password = get_session("ss_tmp_password");
if ($old_email != $mb_email && $config[cf_use_email_certify])
{
set_session("ss_mb_id", "");
alert("회원 정보가 수정 되었습니다.\\n\\nE-mail 주소가 변경되었으므로 다시 인증하셔야 합니다.", $g4[path]);
}
else
{
echo "
<html><title>회원정보수정</title><meta http-equiv='Content-Type' content='text/html; charset=$g4[charset]'></html><body>
<form name='fregisterupdate' method='post' action='./register_form.php'>
<input type='hidden' name='w' value='u'>
<input type='hidden' name='mb_id' value='{$mb_id}'>
<input type='hidden' name='mb_password' value='{$tmp_password}'>
</form>
<script language='JavaScript'>
alert('회원 정보가 수정 되었습니다.');
document.fregisterupdate.submit();
</script>
</body>
</html>";
}
}
?>
동명이인에 대한 문제는 아직 찾고 있는 중이고. 회원정보 수정 후 페이지가 안넘가는 부분은 제가 찾아냈습니다.
register_form_update.php 의 맨 아랫부분입니다.
여기서 <form name='fregisterupdate' method='post' action='./register_form.php'> 부분의 action='./register_form.php' 을 자신이 정보수정후 가고자 url을 업는겁니다. 즉
<form name='fregisterupdate' method='post' action='http://자신이 원하는주소.htm'>
---------------------
<html><title>회원정보수정</title><meta http-equiv='Content-Type' content='text/html; charset=$g4[charset]'></html><body>
<form name='fregisterupdate' method='post' action='./register_form.php'>
<input type='hidden' name='w' value='u'>
<input type='hidden' name='mb_id' value='{$mb_id}'>
<input type='hidden' name='mb_password' value='{$tmp_password}'>
</form>
<script language='JavaScript'>
alert('회원 정보가 수정 되었습니다.');
document.fregisterupdate.submit();
</script>
</body>
</html>";
}
}
?>
정말 초보라서 ㅠㅠ 아무것도 모르는데
이렇게 올려주시는분들 너무 감사해요
게다가 질문하셨는데 답못찾으시다가
독학(?) 표현이 맞는지 모르겠네요
암튼 끝까지 포기 안하시고 알아내셔서 결과도 올려주시다니
너무 감동이에요