昨天發生的大事:南方澳大橋瞬間坍塌!希望能找到失蹤的人,天佑台灣。
而今天我們要瞧瞧如何用 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~
只是傳輸方便,相對也可能遇到駭客的攔截,所以對其中的密碼使用加密來處理。
謝謝你的觀看,我們明天再會。