PHP-04
68819 ワード
MySQL, PHP
DB接続(PHP-DBにバインド)
<!-- mysqli_connect를 이용하여 서버와 연결한다. -->
<!-- 현재 연결하는 서버는 로컬서버이다.(서버ip, 서버명, 서버비밀번호, 데이터베이스명)으로 연결한다. -->
<!-- die함수를 이용하여 실패시 문구를 만든다. -->
<?php
// $변수명을 만들어 변수에 연결 여부를 담는다.
$conn = mysqli_connect("127.0.0.1", "root", "1234", "frontend") or die("데이터베이스 연결 실패");
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 회원 가입 양식을 검사하기 위한 js -->
<script src="js/regist.js" defer></script>
<!-- 주소찾기를 위한 cdn 연결 -->
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<title>Document</title>
</head>
<body>
<h2>회원가입</h2>
<!-- action으로 php파일을 연결하고 onsubmit으로 자바스크립트 내의 함수가 실행되도록 했다., 이 함수는 유효성검사하는 함수임 -->
<form action="2_regist_ok.php" name="regform" id="regform" method="post" onsubmit="return send_it()">
<input type="hidden" name="isssn" id="isssn" value="n">
<p><label>아이디 : <input type="text" name="userid" id="userid" maxlength="20"></label></p>
<p><label>비밀번호 : <input type="password" name="userpw" id="userpw" maxlength="20"></label></p>
<p><label>비밀번호 확인 : <input type="password" name="userpw_re" id="userpw_re" maxlength="20"></label></p>
<p><label>이름 : <input type="text" name="name" id="username"></label></p>
<p><label>휴대폰 번호 : <input type="text" name="hp" id="hp"></label></p>
<p>
<label>남 <input type="radio" name="usergender" id="" value="남자" checked></label>
<label>여 <input type="radio" name="usergender" id="" value="여자"></label>
</p>
<p><label>이메일 : <input type="text" name="email" id="email"></label></p>
<!-- 취미는 php에서 배열로 받는다. -->
<p>
<!-- 배열로 받기위해 name을 hobby[]로 작성한다. -->
취미 :
<label>드라이브<input type="checkbox" name="hobby[]" value="드라이브"></label>
<label>영화감상<input type="checkbox" name="hobby[]" value="영화감상"></label>
<label>공부<input type="checkbox" name="hobby[]" value="공부"></label>
<label>게임<input type="checkbox" name="hobby[]" value="게임"></label>
<label>운동<input type="checkbox" name="hobby[]" value="운동"></label>
<label>코딩<input type="checkbox" name="hobby[]" value="코딩"></label>
</p>
<p>
<input type="text" id="sample6_postcode" placeholder="우편번호" name="zipcode" readonly>
<!-- 여기에 주소를 찾기위한 함수를 연결한다. -->
<input type="button"
onclick="sample6_execDaumPostcode()" value="우편번호 찾기"><br>
</p>
<p>
<input type="text" id="sample6_address" placeholder="주소" name="address1" readonly>
<input type="text" id="sample6_detailAddress" placeholder="상세주소" name="address2"><br>
<input type="text" id="sample6_extraAddress" placeholder="참고항목" name="address3" readonly>
</p>
<p><input type="submit" value="가입완료"> <input type="reset" value="다시작성"></p>
</form>
</body>
</html>
<?php
// include에 만들었던 연결 코드를 include하여 붙인다.
include "./include/dbconn.php";
// 넘어온 값들은 post 형식임으로 아래와 같이 사용한다.
$userid = $_POST['userid'];
$userpw = $_POST['userpw'];
$username = $_POST['name'];
// hobby를 가져오면 배열로 저장된다.
$hobby = $_POST['hobby'];
// 변수 최초 값을 할당
// 어차피 얘가 넘어오면 선택한 값이 넘어옴
$hobbystr = $hobby[0];
// 배열의 길이를 다음과 같이 사용한다.
for ($i=1; $i < count($hobby); $i++) {
// .으로 연결이 가능하여 누적연산자도 아래와 같이 사용
//hobbystr에는 hobby의 값들이 누적되어 재할당되었다.
$hobbystr .= ",".$hobby[$i];
}
$useremail = $_POST['email'];
$hp = $_POST['hp'];
$usergender = $_POST['usergender'];
$zipcode = $_POST['zipcode'];
$address1 = $_POST['address1'];
$address2 = $_POST['address2'];
$address3 = $_POST['address3'];
// sql로 보내기위해 다음과 같이 변수를 저장한다.
// sql코드로 만들어 저장해야한다.
$sql = "insert into tb_user (userid,
userpw, username, userphone, useremail,
userhobby, zipcode, address1, address2, address3, usergender)
values('$userid',md5('$userpw'),'$username','$hp','$useremail','$hobbystr','$zipcode','$address1','$address2','$address3','$usergender')";
// include에 conn변수가 있다. 연결하고자 하는 서버와 해당 서버코드가 담긴 변수를 적으면 sql문이 동작하여 실행되게 된다.
$result = mysqli_query($conn, $sql);
// 쿠키를 만들어 담아 로그인 하기 쉽도록 만든다. (아이디를 자동으로 만들어 넣어줄꺼다)
setcookie("joinid", $userid,time()+60*5,"/")
?>
<script>
// 회원가입 성공 창을 띄운다.
alert("회원가입 성공!");
// 다음 연결 php경로를 만든다.
location.href="./3_login.php";
</script>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>로그인</title>
</head>
<body>
<!-- 쿠키를 받아서 변수에 담을 것이다. -->
<?php
$joinid = "";
if(isset($_COOKIE['joinid'])){
// 해당 쿠키명을 찾아서 만든 변수에 넣는다.
$joinid = $_COOKIE['joinid'];
}
?>
<h2>로그인</h2>
<!-- 로그인이 완료되면 보낼 곳 -->
<form action="3_login_ok.php" method="post">
<!-- 타입과 name을 설정한다. -->
<!-- 변수가 만들어져 있으면 value값을 변수로 세팅한다. -->
<p>아이디 : <input type="text" name="userid" value="<?=$joinid?>"></p>
<p>비밀번호 : <input type="password" name="userpw"></p>
<p><input type="submit" value="로그인"></p>
</form>
<a href="./2_regist.php">회원가입</a>
</body>
</html>
<?php
// 세션을 사용하기 위한 start()함수
session_start();
// 서버와 연결하기위한 코드가 담긴 php를 include
include "./include/dbconn.php";
// userid 변수에 post형식으로 받아온 userid를 넣는다.
$userid = $_POST['userid'];
// userpw 변수에 post형식으로 받아온 userpw를 넣는다.
$userpw = $_POST['userpw'];
//DB검색 sql문을 변수에다가 담는다.
$sql = "select useridx, userid, username from tb_user where userid = '$userid' and userpw = md5('$userpw')";
// result에 sql 실행 결과를 담는다.
$result = mysqli_query($conn, $sql);
// 가져온 데이터를 배열로 담는다. key(컬럼명), value(값)로 담긴다.
$data = mysqli_fetch_array($result);
// flag를 만들어 userid가 존재하는지 검사한다.
// 데이터가 정상적으로 만들어지고 검색이 되면 userid가 존재할 것이다.
$flag = isset($data['userid']) ? true : false;
if($flag){
// 세션에 해당 userid를 넣고
$_SESSION['userid'] = $userid;
// 세션에 해당 useridx를 넣고
$_SESSION['useridx'] = $data['useridx'];
// 세션에 가져온 username을 넣으면 sesstion을 이용하여 새로운 값을 띄울 수 있다.
$_SESSION['username'] = $data['username'];
// 다음과 같이 출력하고 이동시킨다.
echo "<script>alert('로그인 성공'); location.href = './4_main.php';</script>";
}else{
// 그렇지 않으면 다음과 같이 출력하고
echo "<script> alert('로그인 실패! 아이디 비밀번호를 확인하세요');";
// history.back();하여 뒤로 가기를 한다.
echo "history.back(); </script>";
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHP 게시판</title>
</head>
<body>
<h2>PHP 게시판</h2>
<?php
// 세션을 사용한다.
session_start();
// 세션에 이전 페이지에 넣은 값들이 있다. 해당 값을 찾아서 조건문에 이용하자.
if(!isset($_SESSION['userid'])){
?>
<script>
// userid가 없다면 로그인 후 페이지 이용경고창을 띄우고 로그인창으로 보내자
alert("로그인 후 이용하쇼")
location.href = "./3_login.php";
</script>
<?php
}else{
// 만약 userid가 있다면
?>
<!-- username값을 이용하여 환영문구를 만들자 -->
<p><?=$_SESSION['username']?>님 어서옵쇼</p>
<!-- logout도 할 수 있어야한다. -->
<p><a href="./3_logout.php">로그아웃</a></p>
<?php
}
?>
</body>
</html>
<?php
// 세션을 이용한다.
session_start();
// 해당 창으로 오면 세션을 모두 해제한다.
session_unset();
// main페이지로 바로 가도 이제 세션의 값들이 없어서 로그인 페이지로 안내할것이다.
?>
<script>
// 세션에 값들이 모두 삭제되고 해당 경고창을 띄운다.
alert("로그아웃이다");
// login 페이지로 보낸다.
location.href="./3_login.php";
</script>
Reference
この問題について(PHP-04), 我々は、より多くの情報をここで見つけました https://velog.io/@km2535/PHP-04テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol