가장 간단한 등록 페이지를 만들어 보겠습니다. 등록 페이지에는 세 가지 매개변수가 있습니다:
사용자 이름
비밀번호
중복 비밀번호
사용자가 세 가지 매개변수를 작성한 후 제출을 클릭하면 POST 레코드가 connect.php 페이지로 전달됩니다.
POST 레코드를 처리하여 MySQL 데이터베이스에 기록하면 사용자 등록이 완료됩니다.
코드는 다음과 같습니다.
<form action="connect.php" method="post"> 用户名:<input type="text" name="username"><br /> 密码:<input type="password" name="password"><br /> 重复密码:<input type="password" name="repassword"><br /> <input type="submit" value="提交"> </form>
더 빠른 성능을 달성하기 위해 코드 인터페이스를 미화하지 않았습니다. 최대한 빠르게 사용자 등록을 안내해 드리겠습니다.
1. 반복되는 비밀번호 확인
사용자가 두 번 입력한 비밀번호가 일치하지 않는 경우 비밀번호가 입력되었는지 여부.
웹페이지의 여러 곳에서는 여전히 반복되는 비밀번호가 사용되고 있습니다. 사용자가 실수할 것이라는 두려움 때문입니다. 비밀번호가 잘못 입력되었습니다.
사용자는 비밀번호 입력 시 왼쪽과 오른쪽에 두 개의 공백을 더 입력할 수 있습니다. 따라서 우리는 Trim을 사용하여 비밀번호와 반복되는 비밀번호의 양쪽 공백을 제거하겠습니다.
if(trim($_POST['password']) != trim($_POST['repassword'])){ exit('两次密码不一致,请返回上一页'); }
2. 쓸 데이터를 준비합니다
사용자 입력 데이터와 숨겨진 데이터를 모두 데이터베이스에 써야 합니다.
표시되는 데이터는 다음과 같습니다.
가변
| 설명<🎜> < br/> | ||||||
$_POST['사용자 이름'] <🎜> | 사용자 이름 <🎜> | ||||||
$_POST['password'] <🎜>< br/> | 비밀번호<🎜> <🎜> |
불필요한 정보를 입력하지 않으려면 사용자 이름 양쪽의 공백을 제거해야 합니다.
mysql 장에서 언급했듯이 사용자의 비밀번호는 회사 내부자를 포함한 누구에게도 보여서는 안 됩니다. 비밀번호는 되돌릴 수 없는지 확인하세요. 초기 단계에서는 MD5만 배우세요. 앞으로는 다른 암호화 방법을 가르쳐 드리겠습니다.
보이지 않는 데이터는 다음과 같습니다:
변수 / 스팬>
| 설명<🎜> | ||||||
$time<🎜> | 사용자 등록 시간<🎜> | ||||||
사용자가 등록한 IP |
시간별로 반환된 unix 타임스탬프
REMOTE_ADDR은 IP 주소를 반환하며, ip2long을 사용하여 정수 저장소로 변환할 수 있습니다.
$username = trim($_POST['username']); $password = md5(trim($_POST['password'])); $time = time(); $ip = ip2long($_SERVER['REMOTE_ADDR']);
3. 데이터베이스에 연결하고, 오류를 판단하고, 라이브러리 및 문자 집합을 선택합니다
mysqli_connect를 사용하여 데이터베이스 서버에 연결합니다.
오류가 발생하면 mysqli_errno를 사용하여 오류 번호를 가져옵니다.
오류가 발생하면 mysqli_error는 모든 오류를 인쇄하고 종료합니다. 프로그램 실행
데이터베이스를 선택하고 문자셋을 utf8로 설정하세요.
//连接数据库 $conn = mysqli_connect('localhost','root','liwenkaihaha'); //如果有错误,存在错误号 if(mysqli_errno($conn)){ echo mysqli_error($conn); exit; } mysqli_select_db($conn,'user'); mysqli_set_charset($conn,'utf8');
4. SQL 문 결합
얻은 정보를 데이터베이스에 기록해야 합니다. 사용자 이름, 비밀번호, 생성 시간 및 IP가 있습니다.
SQL 문에 해당 변수를 삽입하면 됩니다. 결합된 SQL 문은 다음과 같습니다.
$sql = "insert into user(username,password,createtime,createip) values('" . $username . "','" . $password . "','" . $time . "','" . $ip . "')";
그리고 테이블을 생성하는 문은 다음과 같습니다.
CREATE TABLE IF NOT EXISTS user ( id int(11) NOT NULL, username varchar(30) NOT NULL, password char(32) NOT NULL, createtime int(11) NOT NULL, createip int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
테이블 형식(필드 해당 설명):
ID
| < td width=" 193" valign="top">사용자 이름<🎜>비밀번호<🎜> | 생성 시간<🎜> | createip<🎜> | ||||||||||
사용자 번호< 🎜> | 사용자 이름 <🎜> < /td> | 비밀번호 <🎜> | 생성 시간<🎜> | <🎜>IP 생성 <🎜> <🎜><🎜>< /td> |
연결된 리소스, 여기서 해당 변수는 $conn입니다.
전송된 SQL 문입니다. $sql은 위에서 이미 준비되어 있습니다.$result = mysqli_query($conn,$sql); if($result){ echo '注册成功'; }else{ echo '注册失败'; } echo '当前用户插入的ID为'.mysqli_insert_id($conn);
6. 데이터베이스 연결을 닫습니다.
resource 변수를 mysqli_close 함수에 전달합니다.
mysqli_close($conn);
우리가 구현한 connect.php 코드는 다음과 같습니다. <?php
if (trim($_POST['password']) != trim($_POST['repassword'])) {
exit('两次密码不一致,请返回上一页');
}
$username = trim($_POST['username']);
$password = md5(trim($_POST['password']));
$time = time();
$ip = $_SERVER['REMOTE_ADDR'];
$conn = mysqli_connect('localhost', 'root', 'liwenkaihaha');
//如果有错误,存在错误号
if (mysqli_errno($conn)) {
echo mysqli_error($conn);
exit;
}
mysqli_select_db($conn, 'book');
mysqli_set_charset($conn, 'utf8');
$sql = "insert into user(username,password,createtime,createip) values('" . $username . "','" . $password . "','" . $time . "','" . $ip . "')";
$result = mysqli_query($conn, $sql);
if ($result) {
echo '成功';
} else {
echo '失败';
}
echo '当前用户插入的ID为' . mysqli_insert_id($conn);
mysqli_close($conn);
?>