iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
1
自我挑戰組

30天翻玩動態網站-會員需驗證才能看到部落格文章 系列 第 19

Day19 翻玩 pcheck.php -Show me the code 完結

今天這位PHP是搭配Day17 翻玩 login.php一起,實現驗證登入的 email 與密碼。
還有喵一下 logout.php,跳出來的的寫法!

如果你是第一次看本系列的邦友,可以先點擊下方 Day01 文章,內含 30 秒的 Demo 短片跟原始碼下載。


先來快速瀏覽一下程式碼,重點在if判斷式的部分

玩轉 pcheck.php

  • pcheck.php Page Mods
<?php
session_start();

$email = $_POST['email'];
$password = $_POST['password'];

//Open a new connection to the MySQL server
$mysqli = new mysqli('localhost', 'root', '123456', 'perfectcup');


//Output any connection error
if ($mysqli->connect_error) {
    die('Error : (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}

$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) {

    if (password_verify($password, $row['password'])) {

        $_SESSION['login'] = $row['id'];
        $_SESSION['fname'] = $row['fname'];
        $_SESSION['lname'] = $row['lname'];
        echo 'true';
    }
    else {
        echo 'false';
    }

} else {
    echo 'false';
}

?>

巢狀式迴圈(Nested loop)

  • 在迴圈中再加另一迴圈,所以又稱為多重迴圈
    • 縮排很重要,這樣才能比較好閱讀
  • password_verify()驗證的函式,比對使用者的輸入與資料庫是否相符
  • 相符就印出true,不符就印出false
    • 搭配login.php
      • true:window.location.href = "blog.php"; 登入部落格
      • false: 跳出相關提示訊息
<?php 
if ($num_row >= 1) {

    if (password_verify($password, $row['password'])) {

        $_SESSION['login'] = $row['id'];
        $_SESSION['fname'] = $row['fname'];
        $_SESSION['lname'] = $row['lname'];
        echo 'true';
    }
    else {
        echo 'false';
    }

} else {
    echo 'false';
}
?>

logout.php 登出blog

<?php
session_start();
unset($_SESSION['login']);
unset($_SESSION['fname']);
unset($_SESSION['lname']);
 
header("location:index.php?logout=true");
?>

總結

今天我們跳進出,又跳出來了,非常欠打活潑,終於介紹了一輪,會員驗證部落格所有出廠的 PHP 醬,我們這個系列就此結束,感謝大家的支持與收看...(迷之音:不是才寫到第19天)/images/emoticon/emoticon40.gif

別擔心,明天會討論新的菜單,PHP 炒 MySQL 佐 BootstrapJQuery會碰出甚麼火花呢?應該會蠻好吃的吧!各位晚安,See you tomorrow


上一篇
Day18 jQuery ajax 接 OpenData feat Bootstrap
下一篇
Day20 Bootstrap 3 到 4 的改變? 靜態或動態網站的區別?
系列文
30天翻玩動態網站-會員需驗證才能看到部落格文章 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言