php操作資料庫之透過步驟做一個使用者註冊
我們做一個最簡單的註冊頁面。註冊頁面有三個參數:
1.使用者名稱
2.密碼
3.重複密碼
使用者寫好三個參數後,點選提交的時候向connect.php頁面傳入POST記錄。
我們可以把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>
為了更快的表現我們的程式碼介面沒有進行美化。以最快的速度帶大家完成用戶註冊。
一、 判斷重複密碼
由於有重複密碼,如果使用者兩次輸入的密碼不一致也就是有沒有下一步的任何意義。
在網頁中很多地方還是使用到重複密碼了。因為,害怕的是使用者產生手誤。將密碼填寫出錯。
使用者在輸入密碼的時候可能在左右兩邊多打兩個空格。因此,我們會使用trim將密碼和重複密碼的兩邊去掉空格。
if(trim($_POST['password']) != trim($_POST['repassword'])){
exit('两次密码不一致,请返回上一页');
}二、 準備好寫入的資料
#我們需要把使用者的輸入資料和隱藏的資料都寫入資料庫。
可見資料有:
| 變數 | #說明 |
|---|---|
| $_POST['username'] | 使用者名稱 |
| #$_POST['password'] | 密碼 |
我們需要把使用者名稱去掉兩邊的空格,這樣避免輸入不必要的這些資訊。
在mysql這一章節我們講過,用戶的密碼不要讓包括公司內部人員可見。保證密碼是不可逆向的。在初級階段大家學習MD5即可。以後我們再教大家其他的加密方式。
不可見資料有:
| 變數 | #說明 |
|---|---|
| $time | 用戶的註冊時間 |
| $_SERVER['REMOTE_ADDR'] | 用戶的註冊IP |
1.time回傳的unix時間戳記
2.REMOTE_ADDR回傳的是IP位址,我們可以用ip2long轉換為整數儲存。
$username = trim($_POST['username']); $password = md5(trim($_POST['password'])); $time = time(); $ip = ip2long($_SERVER['REMOTE_ADDR']);
三、連接資料庫、判斷錯誤、選擇庫和字元集
1.我們使用mysqli_connect連接到資料庫伺服器。
2.如果有錯誤,使用mysqli_errno得到錯誤號
3.如何時存在錯誤mysqli_error打印出所有的錯誤,並且退出程序執行
4.選擇資料庫並且設定字元集為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');四、組合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 | username | password | createtime | createip |
|---|---|---|---|---|
| 使用者名稱 | 密碼 | #建立時間 | #建立IP |
$result = mysqli_query($conn,$sql);
if($result){
echo '注册成功';
}else{
echo '注册失败';
}
echo '当前用户插入的ID为'.mysqli_insert_id($conn);五、關閉資料庫連線將資源變數傳到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);
?>
#


