아이디 비밀번호 찾기 AJAX
2022. 2. 18. 10:28ㆍStudy/PHP&MySQL
아이디찾기
/login/id_find.php
이름, 연락처로 $id를 찾는다.
action="find.php"
$name
$hp1 $hp2 $h3
버튼 type="button"
<?
session_start();
@extract($_GET);
@extract($_POST);
@extract($_SESSION);
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>서대문자연사박물관-아이디찾기</title>
<link rel="stylesheet" href="css/member1.css">
<script src="https://kit.fontawesome.com/f8a0f5a24e.js" crossorigin="anonymous"></script>
<script src="../js/jquery-1.12.4.min.js"></script>
<script src="../js/jquery-migrate-1.4.1.min.js"></script>
<script>
$(document).ready(function() {
$(".find").click(function() { // 아이디찾기 버튼을 클릭, id입력 상자에 id값 입력시
var name = $('#name').val(); //홍길동
var hp1 = $('#hp1').val(); //010
var hp2 = $('#hp2').val(); //1111
var hp3 = $('#hp3').val(); //2222
$.ajax({ // ajax 로 data를 넘겨줌
type: "POST",
url: "find.php",
data: "name="+ name+ "&hp1="+hp1+ "&hp2="+hp2+ "&hp3="+hp3, // 매개변수id도 같이 넘겨줌
cache: false,
success: function(data) // 이 메소드가 완료되면 data라는 변수 안에 echo문이 들어감
{
$("#loadtext").html(data); // span안에 있는 태그를 사용할것이기 때문에 html 함수사용
}
});
$("#loadtext").addClass('loadtexton'); // css 변경
});
});
</script>
</head>
<body>
<div id="wrap">
<h1><a href="../index.html" class="logo">서대문자연사박물관</a></h1>
<div id="col2">
<form name="find" method="post" action="find.php">
<div id="title">
<h2 class="hidden">아이디찾기</h2>
<p>가입 시 입력하신 정보로 아이디를 찾아드립니다</p>
</div>
<div id="login_form">
<div class="clear"></div>
<div id="login2">
<div id="id_input_button">
<fieldset>
<input type="text" name="name" class="find_input" id="name" placeholder="이름 (ex. test)">
<div class="telBox">
<label class="hidden" for="hp1">연락처 앞3자리</label>
<select name="hp1" id="hp1" title="휴대폰 앞3자리를 선택하세요." class="find_input">
<option>010</option>
<option>011</option>
<option>016</option>
<option>017</option>
<option>018</option>
<option>019</option>
</select> ㅡ
<label class="hidden" for="hp2">연락처 가운데3자리</label>
<input class="find_input" type="text" id="hp2" name="hp2" title="연락처 가운데3자리를 입력하세요." maxlength="4" placeholder="(ex. 1111)"> ㅡ
<label class="hidden" for="hp3">연락처 마지막3자리</label>
<input class="find_input" type="text" id="hp3" name="hp3" title="연락처 마지막3자리를 입력하세요." maxlength="4" placeholder="(ex. 2222)">
</div>
<input type="button" value="아이디찾기" class="find">
</fieldset>
<span id="loadtext"></span>
<ul class="go">
<li><a href="login_form.php"><i class="fas fa-sign-in-alt"></i>로그인하기</a></li>
<li>비밀번호를 잊으셨나요?<a href="pw_find.php">비밀번호 찾기</a></li>
</ul>
</div>
<div class="clear"></div>
<div id="login_line"></div>
<div id="join_button">
<p>아직도 회원이 아니신가요?</p>
<a href="../member/join.html" class="go_join">회원가입</a>
</div>
</div>
</div><!-- end of form_login -->
</form>
</div> <!-- end of col2 -->
</div> <!-- end of wrap -->
</body>
</html>
/login/find.php
ajax로 받아온 데이터에 대한 유효성검사 및 필드 찾아서 출력하기
<?
session_start();
?>
<meta charset="UTF-8">
<?
@extract($_GET);
@extract($_POST);
@extract($_SESSION);
/*
$name='홍길동'
$hp1='010'
$hp2='1111'
$hp3='2222'
*/
if(!$name) { /* !='없으면'*/
echo("
<script>
window.alert('이름을 입력하세요');
history.go(-1);
</script>
");
exit;
}
if(!($hp2 && $hp3)) {
echo("
<script>
window.alert('연락처를 입력하세요');
history.go(-1);
</script>
");
exit;
}
include "../lib/dbconn.php"; // DB연결
$sql = "select * from member where name='$name'"; //이름으로 검색
$result = mysql_query($sql, $connect); //있으면 1, 없으면 null
$num_match = mysql_num_rows($result); //1 null
if(!$num_match) //검색 레코드가 없으면
{
echo("
<script>
window.alert('등록되지 않은 이름 입니다');
history.go(-1);
</script>
");
exit;
}
else //검색 레코드가 있으면
{
$hp = $hp1."-".$hp2."-".$hp3; // 010-1111-2222 DB안에 저장된 포멧으로 변경
$row = mysql_fetch_array($result);
//$row[id] ,.... $row[level]
$sql ="select * from member where name='$name' and hp='$hp'";
$result = mysql_query($sql, $connect);
$num_match = mysql_num_rows($result); //있으면 1, 없으면 null
/* db에 이미 암호화 된 pass를 다시 암호화해서 기존의 pass로 알아낼수 없다,
암호화된 pass가 입력된 pass의 암호화와 일치하는가를 확인해야함 */
if(!$num_match) // 이름은 있지만..전화번호가 일치하지 않으면
{
echo("
<script>
window.alert('등록된 정보가 없습니다');
history.go(-1);
</script>
");
exit;
}
else // 1이면=이름과 전화번호가 모두 일치 한다면
{
$userid = $row[id];
$username = $row[name];
$userhp = $row[hp];
$date = $row[regist_day];
echo("
<strong>[ 가입정보 ]</strong><br>
아이디 : $userid <br>
이름 : $username <br>
연락처: $userhp <br>
가입일자 : $date
");
}
}
?>
비밀번호 찾기
/login/pw_find.php
이름, 아이디, 연락처로 필드를 찾은 후 임시 비밀번호를 알려준다. $pass를 찾는다.
<?
session_start();
@extract($_GET);
@extract($_POST);
@extract($_SESSION);
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>비밀번호찾기</title>
<link rel="stylesheet" href="css/member1.css">
<script src="https://kit.fontawesome.com/f8a0f5a24e.js" crossorigin="anonymous"></script>
<script src="../js/jquery-1.12.4.min.js"></script>
<script src="../js/jquery-migrate-1.4.1.min.js"></script>
<script>
$(document).ready(function() {
$(".find").click(function() { // 비밀번호찾기 버튼 클릭, id입력 상자에 id값 입력시
var id = $('.find_id').val(); // green2
var name = $('.find_name').val(); // 홍길동
var hp1 = $('#hp1').val(); // 010
var hp2 = $('#hp2').val(); // 1111
var hp3 = $('#hp3').val(); // 2222
$.ajax({
type: "POST",
url: "find2.php", // 매개변수인 check_id.php파일을 post방식으로 넘기세요
data: "id="+ id+ "&name="+ name+ "&hp1="+hp1+ "&hp2="+hp2+ "&hp3="+hp3, // 매개변수id도 같이 넘겨줌
cache: false,
success: function(data) // 이 메소드가 완료되면 data라는 변수 안에 echo문이 들어감
{
$("#loadtext").html(data); // span안에 있는 태그를 사용할것이기 때문에 html 함수사용
}
});
$("#loadtext").addClass('loadtexton');
});
});
</script>
</head>
<body>
<div id="wrap">
<h1><a href="../index.html" class="logo">서대문자연사박물관</a></h1>
<div id="col2">
<form name="find" method="post" action="find2.php">
<div id="title">
<h2 class="hidden">비밀번호찾기</h2>
<p>가입 시 입력하신 정보로 비밀번호를 찾아드립니다</p>
</div>
<div id="login_form">
<div class="clear"></div>
<div id="login2">
<div id="id_input_button">
<fieldset>
<input type="text" name="name" class="find_input find_name" placeholder="이름 (ex. test)">
<input type="text" name="id" class="find_input find_id" placeholder="아이디 (ex. test)">
<div class="telBox">
<label class="hidden" for="hp1">연락처 앞3자리</label>
<select name="hp1" id="hp1" title="휴대폰 앞3자리를 선택하세요." class="find_input">
<option>010</option>
<option>011</option>
<option>016</option>
<option>017</option>
<option>018</option>
<option>019</option>
</select> ㅡ
<label class="hidden" for="hp2">연락처 가운데3자리</label>
<input class="find_input" type="text" id="hp2" name="hp2" title="연락처 가운데3자리를 입력하세요." maxlength="4" placeholder="(ex. 1111)" required> ㅡ
<label class="hidden" for="hp3">연락처 마지막3자리</label>
<input class="find_input" type="text" id="hp3" name="hp3" title="연락처 마지막3자리를 입력하세요." maxlength="4" placeholder="(ex. 2222)" required>
</div>
<input type="button" value="비밀번호찾기" class="find">
</fieldset>
<span id="loadtext">
</span>
<ul class="go">
<li><a href="login_form.php"><i class="fas fa-sign-in-alt"></i>로그인하기</a></li>
<li>아이디를 잊으셨나요?<a href="id_find.php">아이디 찾기</a></li>
</ul>
</div>
<div class="clear"></div>
<div id="login_line"></div>
<div id="join_button">
<p>아직도 회원이 아니신가요?</p>
<a href="../member/join.html" class="go_join">회원가입</a>
</div>
</div>
</div> <!-- end of form_login -->
</form>
</div> <!-- end of col2 -->
</div> <!-- end of wrap -->
</body>
</html>
/login/find2.php
비밀번호는 암호화되어 저장되어 있기 때문에 알려줄 수 없으므로, 랜덤 비밀번호를 생성해 임시암호를 알려준다.
그리고 랜덤비밀번호로 비밀번호를 변경해준다.
<?
session_start();
?>
<meta charset="UTF-8">
<?
@extract($_GET);
@extract($_POST);
@extract($_SESSION);
/*
$id='green2'
$name='홍길동'
$hp1='010'
$hp2='1111'
$hp3='2222'
*/
if(!$id) { /* !='없으면'*/
echo("
<script>
window.alert('아이디를 입력하세요');
history.go(-1);
</script>
");
exit;
}
if(!$name) { /* !='없으면'*/
echo("
<script>
window.alert('이름을 입력하세요');
history.go(-1);
</script>
");
exit;
}
if(!($hp2 && $hp3)) {
echo("
<script>
window.alert('연락처를 입력하세요');
history.go(-1);
</script>
");
exit;
}
include "../lib/dbconn.php";
$sql = "select * from member where id='$id'";
$result = mysql_query($sql, $connect); //있으면 1, 없으면 null
$num_match = mysql_num_rows($result); //1 null
if(!$num_match) //검색 레코드가 없으면
{
echo("
<script>
window.alert('등록되지 않은 아이디 입니다');
history.go(-1);
</script>
");
exit;
}
else //검색 레코드가 있으면
{
$hp = $hp1."-".$hp2."-".$hp3;
$row = mysql_fetch_array($result);
//$row[id] ,.... $row[level]
$sql ="select * from member where id='$id' and name='$name' and hp='$hp'";
$result = mysql_query($sql, $connect);
$num_match = mysql_num_rows($result); //있으면 1, 없으면 null
/* db에 이미 암호화 된 pass를 다시 암호화해서 기존의 pass로 알아낼수 없다,
암호화된 pass가 입력된 pass의 암호화와 일치하는가를 확인해야함*/
if(!$num_match) //null이면=입력된 pass가 암호화된 패스와 맞지 않다면
{
echo("
<script>
window.alert('등록된 정보가 없습니다');
history.go(-1);
</script>
");
exit;
}
else //1이면=아이디와 이름 전화번호가 모두 일치 한다면
{
$userid = $row[id];
$username = $row[name];
$userhp = $row[hp];
$date = $row[regist_day];
// 랜덤 비밀번호 생성
function generateRandomPassword($length=8, $strength=0) {
$vowels = 'aeuy';
$consonants = 'bdghjmnpqrstvz'; //랜덤으로 뽑아낼 기본 문자
if ($strength & 1) { // $strength == 1
$consonants .= 'BDGHJLMNPQRSTVWXZ'; //추가할 문자
}
$password = '';
$alt = time() % 2; // 0,1
for ($i = 0; $i < $length; $i++) { // 0~7 8회
if ($alt == 1) {
$password .= $consonants[(rand() % strlen($consonants))]; // 글자들의 인덱스번호
$alt = 0;
} else {
$password .= $vowels[(rand() % strlen($vowels))];
$alt = 1;
}
}
return $password; // 임시 패스워드
}
$ranpass = generateRandomPassword(8,1); //랜덤으로 뽑은 8자의 문자
echo ("
<strong>[ 가입정보 ]</strong><br>
임시비밀번호는 <strong> $ranpass </strong> 입니다<br>
아이디 : $userid <br>
이름 : $username <br>
연락처: $userhp <br>
가입일자 : $date <br>
<strong>* 로그인 후 비밀번호를 변경해주세요.</strong>
");
$sql = "update member set pass=password('$ranpass') where id='$id' and name='$name' and hp='$hp'"; // 임시패스워드로 비밀번호를 수정해준다.
$result = mysql_query($sql, $connect);
}
}
?>
랜덤 비밀번호 생성하기
// 랜덤 비밀번호 생성
function generateRandomPassword($length=8, $strength=0) {
$vowels = 'aeuy';
$consonants = 'bdghjmnpqrstvz'; //랜덤으로 뽑아낼 기본 문자
if ($strength & 1) { // $strength == 1
$consonants .= 'BDGHJLMNPQRSTVWXZ'; //추가할 문자
}
$password = '';
$alt = time() % 2; // 0,1
for ($i = 0; $i < $length; $i++) { // 0~7 8회
if ($alt == 1) {
$password .= $consonants[(rand() % strlen($consonants))]; // 글자들의 인덱스번호
$alt = 0;
} else {
$password .= $vowels[(rand() % strlen($vowels))];
$alt = 1;
}
}
return $password; // 임시 패스워드
}
$ranpass = generateRandomPassword(8,1); //랜덤으로 뽑은 8자의 문자
'Study > PHP&MySQL' 카테고리의 다른 글
기본게시판 (0) | 2022.02.21 |
---|---|
회원정보수정 (0) | 2022.02.18 |
로그인 및 로그아웃 (0) | 2022.02.17 |
SSH 접속프로그램 PuTTY 사용법 (0) | 2022.02.17 |
회원가입 - ajax (0) | 2022.02.16 |