<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="login.css">
<script>
//체크 함수 생성
function check() {
//myfrom 이름 설정
var f = document.myform;
/*
//id가 공백이면
if (f.id.value == "") {
alert("아이디를 입력해주십시오");
f.id.focus();
console.log(f);
return false;
}
//아이디 유효성 체크 idlength변수 생성 해주고 범위가 맞으면 true니까 ! 넣어줘서 범위가 맞지 않는다고 해줘야 실행이 된다
var idlength = /^[a-zA-z0-9]{6,12}$/;
if(!idlength.test(f.id.value)){
alert("아이디는 영문대/소문자 숫자6~12입력해주세요");
f.id.focus();
return false;
}
if (f.pass.value == "") {
alert("비밀번호를 입력해주세요");
f.pass.focus();
return false;
}
if (f.passcheck.value == "" ) {
alert("비밀번호를 입력해주세요");
f.pass.focus();
return false;
}
//틀리면 클리어 시킨다 해야겠찌?
if(f.pass.value !=f.passcheck.value){
alert("비빌번호 확인");
f.passcheck.focus();
f.passcheck.value= "";
return false;
}
//비밀번호 유효성 체크 처음에는 passcheck까지 || 넣어주려고 했는데 굳이 그럴필요가 없네 어짜피 한쪽이 안 맞으면 안되니까
var passlength=/^[a-zA-z0-9]{6,15}$/;
if(!passlength.test(f.pass.value)){
alert("비밀번호는 영문대/소문자 숫자6~15입력해주세요");
f.pass.focus();
return false;
}
if (f.name.value == "") {
alert("이름을 입력해주세요");
f.name.focus();
return false;
}
if (f.email.value == "") {
alert("메일을 확인해주세요");
f.email.focus();
return false;
}
*/
}
</script>
<div class="wrapper fadeInDown">
<div id="formContent">
<!-- Tabs Titles -->
<h2 class="inactive underlineHover"><a href="login.php"> 로그인 </h2></a>
<a href="join.php"><h2 class="active">회원가입 </h2></a>
<!-- Icon -->
<!-- Login Form -->
<!--submit버튼을 누르면 onsubmit이 실행되어
check함수가 실행되고
check함수의 return 값이 true일 경우에만 폼을 전송합니다.
onsubmit 이벤트 속성에 들어가는 함수는 반드시
전송해야 할 경우 true를 반환하고
하지말아야 할 경우 false를 반환하는 형식이어야 합니다. -->
<form name="myform" method="POST" action="joinact.php" onsubmit="return check()">
<input type="text" class="fadeIn first" name="id" maxlength="12" placeholder="아이디">
<input type="password" class="fodeIn second" name="pass" maxlength="15" placeholder="비밀번호">
<input type="password" class="fodeIn second" name="passcheck" maxlength="15" placeholder="비밀번호확인">
<input type="text" class="fadeIn third" name="name" placeholder="이름" >
<input type="text" class="fadeIn fourth " name="email" placeholder="메일" >
<input type="submit" id="submit" class="fadeIn fourth" value="회원가입">
</form>
<!-- Remind Passowrd -->
<div id="formFooter">
<a class="underlineHover" href="#">Forgot Password?</a>
</div>
</div>
</div>
</head>
</html>
기본적인 회원가입form 위쪽에는 script설정을 해놔서 from name을 준 것 script 주석은 그냥 지우고 쓰면 된다
post방식으로 데이터를 넘김
<?php
include("dbconn.php");
include("password.php");
$id=$_POST['id'];
$pass=$_POST['pass'];
$name=$_POST['name'];
$email=$_POST['email'];
$sql="select id from login where id='$id'";
$row=mysqli_query($conn,$sql);
/*mysqli_fetch_array 연관배열에서 키값,번호중 아무거나 잡아서 사용 가능하다 select 쿼리의 결과값으로 사용되고 한번에 한개의 데이터행을 배열의 행태로 가져옴
더이상 반환 데이터가 없을 때 가지 true를 반환한다
login디비에서 모든 데이터를 검사후 없으면 true를 반환 하게 된다 그러면 id와 동일한 값은 없다는 소리 false면 동일한 id 값이 있다는
## 애초에 sql문에 조건을 걸어놨는데 모든배열에 데이터를 다시 검사할 필요없이 있는지 없는지만 판단 하면 되니 fetch를 사용할 필요가 없다 */
// mysqli_num_rows sql문에 총 개수를 구해준다 중복검사 total>0 total가 0보다 크면 중복된 값이 있다는 소리이기때문에 알림창 후 뒤로가기
$total = mysqli_num_rows($row);
if($total>0){
echo "<script>alert('id already');history.back();</script>";
}else {
// 비밀번호 암호화
$encrypted_passwd = password_hash($pass,PASSWORD_DEFAULT);
// filter변수에 array생성 (위 쪽에 받아온 post값 그대로 사용해도 되지만 sql인젝션 방어 하기 위해 나중에 설정 할 예정)
$filter= array(
"id"=>$id,
"pass"=>$encrypted_passwd,
"name"=>$name,
"email"=>$email
);
$sql="insert into login (id,pass,name,date,email) values ( '{$filter['id']}',
'$encrypted_passwd',
'{$filter['name']}',
NOW(),
'{$filter['email']}'
)";
$row=mysqli_query($conn,$sql);
$result=mysqli_fetch_array($row);
//알림창 띄우고 성공알림창 누르면 로그인 페이지로 이동
echo "<script>alert('join success wellcome');document.location.href='login.php';</script>";
}
?>
<!--알림창 띄우고 성공알림창 누르면 로그인 페이지로 이동
echo "<script>
alert('축하');
document.location.href='login.php';
</script>"; -->
https://hansoul.tistory.com/83 암호화 include파일은 여기서 복사 하시면 됩니다
post데이터를 받아오고 insert 하기전에 아이디 중복 검사를 실행한다 주석을 달아놓긴 했는데
모르는 부분 있으면 아는 한 최대한 답 하겠습니다
테스트 하기 위해 script유효성 검사 주석 한거라 해제 하면 정상적으로 사용 가능 합니다
[PHP] JQuery 버튼 누르면 select 비 활성화 (0) | 2021.11.10 |
---|---|
[PHP] 로그인 select email (0) | 2021.10.29 |
javascript 빈칸 검사 (0) | 2021.10.20 |
[PHP] mysqli_real_escape_string (0) | 2021.10.18 |
[PHP] Fatal error: Call to undefined function mysqli_connect() (0) | 2021.10.14 |
댓글 영역