# WordPress
###### tags: `puli_foodmap`
- [安裝及架設WordPress](https://www.youtube.com/watch?v=-pg4af7TvoA&ab_channel=BritaDTW)
- [WordPress如何加密](https://t.codebug.vip/questions-1243910.htm)
- [下載WordPress檔案](https://tw.wordpress.org/download/)
- [學姊寫的wordpress-找安妮](http://foodmap.nuageservice.tw/2021/03/27/%e6%89%be%e5%ae%89%e5%a6%ae/)
- [關於wordpress密碼的破解思路](https://www.itread01.com/content/1549282886.html)
- [wordpress的用户驗證以及密碼加密 =>"phpass"](https://www.jianshu.com/p/e36c56050a8c)
- [[WordPress] 後台登入網址修改(wp-login.php) ](https://code.yidas.com/wordpress-rename-wp-login/)
- [ (實作)使用者登入與密碼驗證](https://ithelp.ithome.com.tw/articles/10196601)
- [學姊完整wordpress](http://foodmap.nuageservice.tw/)
## login.php
``` php=
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php session_start(); ?>
<!--上方語法為啟用session,此語法要放在網頁最前方-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
//連接資料庫
//只要此頁面上有用到連接MySQL就要include connect.php
include("connect.php");
// 取得使用者輸入的帳號、密碼
// @$userLogin = $_POST['userLogin'];
// @$userPass = $_POST['userPass'];
@$userLogin = $_POST['userLogin'];
@$userPass = $_POST['userPass'];
// 搜尋資料庫資料
$sql = "SELECT * FROM wp_users Where user_login = '$userLogin'";
// 執行查詢 mysqli_query(連接要使用的MySQL, 要查詢的資料)
$result = mysqli_query($link, $sql);
require_once ('C:\xampp\htdocs\wordpress\wp-includes\class-phpass.php');
$wp_hasher= new PasswordHash(8, TRUE);
// // $userPass = 'gr4D4xr^pxgOZnqngY';
// $db_password='$P$BXok5v0T8sxcnq6BZEoDa4tevsya1H.';
// // 解密驗證 check CheckPassword(使用者輸入密碼,資料庫加密過後的密碼);
// $checkPassword = $wp_hasher -> CheckPassword($userPass,$db_password);
// echo ($checkPassword);
// require_once ('C:\xampp\htdocs\wordpress\wp-includes\pluggable.php');
// echo(wp_hash_password($userPass));
// if($rows){
while($row = mysqli_fetch_assoc($result)){
// $userPass = 'gr4D4xr^pxgOZnqngY';
$db_password = $row['user_pass'];
// 解密驗證 check CheckPassword(使用者輸入密碼,資料庫加密過後的密碼);
$checkPassword = $wp_hasher -> CheckPassword($userPass,$db_password);
// 登入成功
// 判斷帳號與密碼是否為空白 以及確認是否為MySQL資料庫裡是否有這個會員
if($userLogin != null && $userPass != null && $row['user_login'] == $userLogin && $checkPassword == 1)
{
// 將帳號寫入session,方便驗證使用者身份
// session 內儲存 user-login(帳號)
$_SESSION['userLogin'] = @$userLogin;
// 將user_status改成1
$sql_online = "UPDATE wp_users SET user_status = 1 Where user_login = '$userLogin'";
mysqli_query($link,$sql_online);
echo $row["user_login"];
// $row["userPass"];
echo '登入成功!';
// echo '<meta http-equiv=REFRESH CONTENT=1;url=member.php>';
}
else // 登入失敗
{
echo $row["user_login"].
$row["user_pass"];
echo '登入失敗!';
// echo '<meta http-equiv=REFRESH CONTENT=1;url=index.php>';
}
}
?>
```
## logout.php
``` php=
<!-- 登出 - 洗掉登入使用者之session(logout.php) -->
<!-- -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
include('connect.php');
include('login.php');
// 如果網頁關掉 , 1:連線由使用者或是網路終止
echo $_SESSION['userLogin'];
$userLogin = $_SESSION['userLogin'];
// 把狀態改成不再線上
// 將user_status改成0
$sql_offline = "UPDATE wp_users SET user_status = 0 Where user_login = '$userLogin'";
mysqli_query($link,$sql_offline);
//將session清空
unset($_SESSION['userLogin']);
echo '登出中......';
// echo '<meta http-equiv=REFRESH CONTENT=1;url=index.php>';
?>
```
## connect.php
``` php=
<!-- fetch data 連接資料庫 取得資料 -->
<?php
$link = mysqli_connect("localhost","root","","wordpress");
// db_host, db_username, db_password, db_name
// $link = mysqli_connect("localhost","foodmap","foodmap@puli#ncnu","wordpress");
if ($link == false) {
die("連接失敗: " .mysqli_connect_error());
}
// $sql 加入sql語法 從 user 的資料表中選擇所有欄位
$sql = "SELECT * FROM `wp_users`";
// 以下程式是將DB中的資料印出來
// $result 從DB中取出結果集
$result = $link->query($sql);
$row = mysqli_fetch_assoc($result);
// if ($result->num_rows >= 0) {
// // 輸出數據
// // echo "id: "." "."Name: "." "."username: ". "<br>";
// while($row = $result->fetch_assoc()) {
// // id name username password
// echo " id: " . $row["ID"].
// " 帳號: " . $row["user_login"].
// " 密碼: " . $row["user_pass"].
// " 姓名: " . $row["user_nicename"].
// " 信箱: " . $row["user_email"].
// " userUrl: " . $row["user_url"].
// " userRegisterd: " . $row["user_registered"].
// " userActivationKey: " . $row["user_activation_key"].
// " userStatus: " . $row["user_status"].
// " displayName: " . $row["display_name"]. "<br>";
// }
// } else {
// echo "0 結果";
// }
mysqli_query($link, "SET NAMES 'utf8'"); //設定資料庫編碼 utf8
// $link->close();
?>
```
# 整理後
## login.php
```php=
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php session_start(); ?>
<!--上方語法為啟用session,此語法要放在網頁最前方-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
//連接資料庫
//只要此頁面上有用到連接MySQL就要include connect.php
include("connect.php");
// 取得使用者輸入的帳號、密碼
@$userLogin = $_POST['userLogin'];
@$userPass = $_POST['userPass'];
// 搜尋資料庫資料
$sql = "SELECT * FROM wp_users Where user_login = '$userLogin'";
// 執行查詢 mysqli_query(連接要使用的MySQL, 要查詢的資料)
$result = mysqli_query($link, $sql);
require_once ('C:\xampp\htdocs\wordpress\wp-includes\class-phpass.php');
$wp_hasher= new PasswordHash(8, TRUE);
while($row = mysqli_fetch_assoc($result)){
// 資料庫加密過後的密碼
$db_password = $row['user_pass'];
// 解密驗證 check CheckPassword(使用者輸入密碼,資料庫加密過後的密碼);
$checkPassword = $wp_hasher -> CheckPassword($userPass,$db_password);
// 登入成功
// 判斷帳號與密碼是否為空白 以及確認是否為MySQL資料庫裡是否有這個會員
if($userLogin != null && $userPass != null && $row['user_login'] == $userLogin && $checkPassword == 1)
{
// 將帳號寫入session,方便驗證使用者身份
// session 內儲存 user-login(帳號)
$_SESSION['userLogin'] = @$userLogin;
// 將user_status改成1
$sql_online = "UPDATE wp_users SET user_status = 1 Where user_login = '$userLogin'";
mysqli_query($link,$sql_online);
echo $row["user_login"];
echo '登入成功!';
}
else // 登入失敗
{
echo $row["user_login"];
echo '登入失敗!';
}
}
?>
```
## connect.php
```php=
<!-- fetch data 連接資料庫 取得資料 -->
<?php
$link = mysqli_connect("localhost","foodmap","foodmap@puli#ncnu","wordpress");
// db_host, db_username, db_password, db_name
if ($link == false) {
die("連接失敗: " .mysqli_connect_error());
}
// $sql 加入sql語法 從 user 的資料表中選擇所有欄位
$sql = "SELECT * FROM `wp_users`";
// 以下程式是將DB中的資料印出來
// $result 從DB中取出結果集
$result = $link->query($sql);
$row = mysqli_fetch_assoc($result);
mysqli_query($link, "SET NAMES 'utf8'"); //設定資料庫編碼 utf8
?>
```