php操作資料庫(kù)之透過(guò)步驟做一個(gè)使用者註冊(cè)
我們做一個(gè)最簡(jiǎn)單的註冊(cè)頁(yè)面。註冊(cè)頁(yè)面有三個(gè)參數(shù):
????1.使用者名稱
????2.密碼
????3.重複密碼
使用者寫好三個(gè)參數(shù)後,點(diǎn)選提交的時(shí)候向connect.php頁(yè)面?zhèn)魅隤OST記錄。
我們可以把POST記錄處理後寫入到MySQL資料庫(kù)中,也就是完成了使用者註。
程式碼如下:
<form action="connect.php" method="post"> 用戶名:<input type="text" name="username"><br /> 密碼:<input type="password" name="password"><br /> 重復(fù)密碼:<input type="password" name="repassword"><br /> <input type="submit" value="提交"> </form>
為了更快的表現(xiàn)我們的程式碼介面沒有進(jìn)行美化。以最快的速度帶大家完成用戶註冊(cè)。
一、 判斷重複密碼
由於有重複密碼,如果使用者兩次輸入的密碼不一致也就是有沒有下一步的任何意義。
在網(wǎng)頁(yè)中很多地方還是使用到重複密碼了。因?yàn)椋ε碌氖鞘褂谜弋a(chǎn)生手誤。將密碼填寫出錯(cuò)。
使用者在輸入密碼的時(shí)候可能在左右兩邊多打兩個(gè)空格。因此,我們會(huì)使用trim將密碼和重複密碼的兩邊去掉空格。
if(trim($_POST['password']) != trim($_POST['repassword'])){ exit('兩次密碼不一致,請(qǐng)返回上一頁(yè)'); }
二、 準(zhǔn)備好寫入的資料
#我們需要把使用者的輸入資料和隱藏的資料都寫入資料庫(kù)。
可見資料有:
變數(shù) | #說(shuō)明 |
---|---|
$_POST['username'] | 使用者名稱 |
#$_POST['password'] | 密碼 |
我們需要把使用者名稱去掉兩邊的空格,這樣避免輸入不必要的這些資訊。
在mysql這一章節(jié)我們講過(guò),用戶的密碼不要讓包括公司內(nèi)部人員可見。保證密碼是不可逆向的。在初級(jí)階段大家學(xué)習(xí)MD5即可。以後我們?cè)俳檀蠹移渌募用芊绞健?
不可見資料有:
變數(shù) | #說(shuō)明 |
---|---|
$time | 用戶的註冊(cè)時(shí)間 |
$_SERVER['REMOTE_ADDR'] | 用戶的註冊(cè)IP |
????
????1.time回傳的unix時(shí)間戳記
????2.REMOTE_ADDR回傳的是IP位址,我們可以用ip2long轉(zhuǎn)換為整數(shù)儲(chǔ)存。
$username = trim($_POST['username']); $password = md5(trim($_POST['password'])); $time = time(); $ip = ip2long($_SERVER['REMOTE_ADDR']);
三、連接資料庫(kù)、判斷錯(cuò)誤、選擇庫(kù)和字元集
1.我們使用mysqli_connect連接到資料庫(kù)伺服器。
2.如果有錯(cuò)誤,使用mysqli_errno得到錯(cuò)誤號(hào)
3.如何時(shí)存在錯(cuò)誤mysqli_error打印出所有的錯(cuò)誤,並且退出程序執(zhí)行
4.選擇資料庫(kù)並且設(shè)定字元集為utf8.
//連接數(shù)據(jù)庫(kù) $conn = mysqli_connect('localhost','root','liwenkaihaha'); //如果有錯(cuò)誤,存在錯(cuò)誤號(hào) if(mysqli_errno($conn)){ echo mysqli_error($conn); exit; } mysqli_select_db($conn,'user'); mysqli_set_charset($conn,'utf8');
四、組合SQL語(yǔ)句
我們需要把得到的資訊寫入到資料庫(kù)裡面去,使用者名稱、密碼、建立時(shí)間、IP我們都得到了。
將對(duì)應(yīng)的變數(shù)插入SQL語(yǔ)句中即可。組合出來(lái)的SQL語(yǔ)句如下:
$sql = "insert into user(username,password,createtime,createip) values('" . $username . "','" . $password . "','" . $time . "','" . $ip . "')";
而我們的建立表格的語(yǔ)句如下:
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;
表格的格式(欄位對(duì)應(yīng)說(shuō)明):
id | username | password | createtime | createip |
---|---|---|---|---|
使用者名稱 | 密碼 | #建立時(shí)間 | #建立IP |
$result = mysqli_query($conn,$sql); if($result){ echo '注冊(cè)成功'; }else{ echo '注冊(cè)失敗'; } echo '當(dāng)前用戶插入的ID為'.mysqli_insert_id($conn);五、關(guān)閉資料庫(kù)連線將資源變數(shù)傳到mysqli_close這個(gè)函數(shù)裡面即可。
mysqli_close($conn);用戶註冊(cè)的基本實(shí)作程式碼就寫完了。我們上面講的都是程式碼片段。 我們整個(gè)實(shí)作的connect.php程式碼如下:
<?php if (trim($_POST['password']) != trim($_POST['repassword'])) { exit('兩次密碼不一致,請(qǐng)返回上一頁(yè)'); } $username = trim($_POST['username']); $password = md5(trim($_POST['password'])); $time = time(); $ip = $_SERVER['REMOTE_ADDR']; $conn = mysqli_connect('localhost', 'root', 'liwenkaihaha'); //如果有錯(cuò)誤,存在錯(cuò)誤號(hào) 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 '當(dāng)前用戶插入的ID為' . mysqli_insert_id($conn); mysqli_close($conn); ?>
#