昨天發生的大事:南方澳大橋瞬間坍塌!希望能找到失蹤的人,天佑台灣。
而今天我們要瞧瞧如何用 PHP 驗證使用者,然後將驗證通過的寫入SQL資料庫。
如果你是第一次看本系列的邦友,可以先點擊下方 Day01 文章,內含 30 秒的 Demo 短片跟原始碼下載。
我們先快速瀏覽過程式碼,看看有甚麼新奇的玩意?!
<?php
session_start();
//Open a new connection to the MySQL server
$mysqli = new mysqli('localhost', 'root', '12345', 'perfectcup');
//Output any connection error
if ($mysqli->connect_error) {
die('Error : (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}
$fname = mysqli_real_escape_string($mysqli, $_POST['fname']);
$lname = mysqli_real_escape_string($mysqli, $_POST['lname']);
$email = mysqli_real_escape_string($mysqli, $_POST['email']);
$password = mysqli_real_escape_string($mysqli, $_POST['password']);
//VALIDATION
if (strlen($fname) < 2) {
echo 'fname';
} elseif (strlen($lname) < 2) {
echo 'lname';
} elseif (strlen($email) <= 4) {
echo 'eshort';
} elseif (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo 'eformat';
} elseif (strlen($password) <= 4) {
echo 'pshort';
//VALIDATION
} else {
//PASSWORD ENCRYPT
$spassword = password_hash($password, PASSWORD_BCRYPT, array('cost' => 12));
$query = "SELECT * FROM members WHERE email='$email'";
$result = mysqli_query($mysqli, $query) or die(mysqli_error());
$num_row = mysqli_num_rows($result);
$row = mysqli_fetch_array($result);
if ($num_row < 1) {
$insert_row = $mysqli->query("INSERT INTO members (fname, lname, email, password) VALUES ('$fname', '$lname', '$email', '$spassword')");
if ($insert_row) {
$_SESSION['login'] = $mysqli->insert_id;
$_SESSION['fname'] = $fname;
$_SESSION['lname'] = $lname;
echo 'true';
}
} else {
echo 'false';
}
}
?>
$spassword = password_hash($password, PASSWORD_BCRYPT, array('cost' => 12));
我們對照前兩天的 register.php 註冊表單的內容,了解如何通過 PHP 來連接資料庫。
透過兩位 PHP 程式跳著 POST 舞步,達到驗證與寫入資料庫,是不是很有Fu~
只是傳輸方便,相對也可能遇到駭客的攔截,所以對其中的密碼使用加密來處理。
謝謝你的觀看,我們明天再會。