溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于PHP怎么實現(xiàn)個人博客網(wǎng)站

發(fā)布時間:2022-04-15 13:38:11 來源:億速云 閱讀:222 作者:iii 欄目:開發(fā)技術(shù)

這篇“基于PHP怎么實現(xiàn)個人博客網(wǎng)站”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“基于PHP怎么實現(xiàn)個人博客網(wǎng)站”文章吧。

一、運行展示

基于PHP怎么實現(xiàn)個人博客網(wǎng)站

二、功能說明

未登錄用戶:

僅可以瀏覽所有博客的內(nèi)容。

已登錄用戶:

  • 瀏覽所有博客的內(nèi)容;

  • 發(fā)表博客;

  • 刪除自己的博客;

  • 修改自己的博客;

  • 在任一博客下評論;

  • 修改昵稱和密碼。

管理員:

  • 可以執(zhí)行普通用戶的所有功能;

  • 修改任一博客的內(nèi)容;

  • 刪除任一博客;

  • 刪除任一用戶。

網(wǎng)站平臺功能補充說明:

  • 動態(tài)顯示博客信息(如當前所有博客數(shù)量,用戶個人博客數(shù)量,以及博客內(nèi)容信息);

  • 博客和評論發(fā)表的時間遵循北京時間;

  • 登錄時只要輸入賬號密碼即可,后臺會自動判斷該賬號為普通用戶還是管理員,進而推送到對應的網(wǎng)頁。

三、核心代碼講解

1、創(chuàng)建數(shù)據(jù)庫

drop database  if  exists grblog;
CREATE DATABASE `grblog` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE grblog;
-- 人員信息
CREATE TABLE admin
(
    adminMail varchar(25) primary key,
    adminName varchar(10) not null,
    passWord varchar(15) not null,
    level enum('user', 'super')
);

-- 博客信息
CREATE TABLE blog
(
    blogNo int primary key AUTO_INCREMENT,
    blogTopic varchar(50) not null,
    blogContent varchar(5000) not null,
    adminMail varchar(25) not null,
    importDate date not null ,
    foreign key (adminMail) references admin(adminMail)

);

-- 評論信息
CREATE TABLE comment
(
    commentNo int primary key AUTO_INCREMENT,
    commentContent varchar(500) not null,
    adminMail varchar(25) not null,
    blogNo int,
    commentDate datetime not null ,
    foreign key (adminMail) references admin(adminMail),
    foreign key (blogNo) references blog(blogNo)

);

2、初始化數(shù)據(jù)

INSERT INTO `admin` (`adminMail`,`adminName`, `passWord`, `level`) VALUES ('2015100@126.com', '不脫發(fā)的程序猿', 'pwdpwd', 'user'),('2015333@163.com', '濤歌依舊', 'pwdpwd', 'user'),('2015222@qq.com', 'ThinkWon', 'pwdpwd', 'user'),('2015111@qq.com', 'SAP劍客', 'pwdpwd', 'user'),('2015201@126.com', '敖 丙', 'pwdpwd', 'user'),('2015202@126.com', '>=FreeMan=<', 'pwdpwd', 'user'),('2015203@126.com', '布客飛龍', 'pwdpwd', 'user'),('2015101@126.com', 'Riveore', 'pwdpwd', 'user'),('2015102@1256.com', '打雜人', 'pwdpwd', 'user'),('super@126.com', '超級管理員', 'superpwd', 'super');
INSERT INTO `blog` (`blogNo`,`blogTopic`, `blogContent`, `adminMail`, `importDate`) VALUES (1, 'Python開發(fā)人員常犯的幾個重大錯誤', 'Python 無疑是當今使用最廣泛的編程語言,特別是進入人工智能時代,已經(jīng)成為人工智能開發(fā)的主要語言,甚至小學三年級就已經(jīng)教學該語言。它之所以如此流行,很大程度上是由于簡單的語法和老少皆宜的可讀性,這使得它非常容易使用。初學者之所以喜歡 Python,是因為它給人一種感覺就像是用英語寫一段偽代碼一樣。但是,無論你有多么豐富的經(jīng)驗,也無論你已經(jīng)研究過多少種語言,切換到 Python 并不能保證你能做到平穩(wěn)過渡。具有面向?qū)ο缶幊瘫尘暗拈_發(fā)人員很容易忽略 Python 的常用特性,或者說python范式編程。這樣一來,他們很可能會誤用編程結(jié)構(gòu),從而可能出現(xiàn)難以發(fā)現(xiàn)的、不可預見的錯誤。更糟糕的是,這些錯誤大多很難發(fā)現(xiàn),并且可能會給項目工程帶來天大的麻煩,輕則刪庫跑路,重則抱恨終身。在本文中,將列出程序員(通常是菜鳥)可能會犯的常見錯誤。此外,我還將介紹如何避免這些錯誤,以便編寫出更好的、無錯誤的 Python 代碼。', '2015100@126.com','2020-12-1'),(2, '組合優(yōu)化問題', '其實組合優(yōu)化問題我想大家肯定是遇到過的,因為可能現(xiàn)在在看這篇博客的同學都學過了算法程序設(shè)計或者數(shù)據(jù)結(jié)構(gòu)等的課程。那么你們肯定見過所謂的0-1背包問題,這個問題就是很典型的組合優(yōu)化問題。當然啦還有旅行商問題等也屬于組合優(yōu)化問題。很多離散組合優(yōu)化問題都是從運籌學(Operations Research,OR)中演化出來的。組合優(yōu)化其所研究的問題涉及到信息技術(shù)、經(jīng)濟管理、工業(yè)工程、交通運輸、通信網(wǎng)絡等眾多領(lǐng)域,在科學研究和生產(chǎn)實踐中都起著重要的作用。我們不難發(fā)現(xiàn),其實這些問題解決的方法其實很簡單,比方說0-1背包,那無非就是n個物品,每個物品要么帶要么不帶,即為2^n的情況,得到所有情況然后取出價值最大的那種方法就可以了。是呀,這樣子的話真的是老簡單了。哈哈,開個玩笑。只要是稍微多想一想都能發(fā)現(xiàn)我們上述的窮舉法有一個很致命的問題,就是當你的n值過大時,對應的計算量可是呈指數(shù)暴增的。所以這個時候,就需要我們借助智能優(yōu)化計算方法,可以在合理的時間內(nèi)求解得到令人滿意的解,從而滿足實踐的需要。對于算法的計算復雜性,我們一般很容易進行判斷,例如使用蠻力法去枚舉旅行商問題或者0-1背包問題的算法,就是具有指數(shù)計算復雜性的算法。', '2015101@126.com','2020-12-1'),(3, 'PHP簡介', 'PHP最初是一個小型的開源項目,隨著越來越多的人發(fā)現(xiàn)它很有用,它發(fā)展了起來。Rasmus Lerdorf在1994年發(fā)布了PHP的第一個版本。PHP是“PHP:超文本預處理器(PHP: Hypertext Preprocessor)”的遞歸首字母縮略詞。PHP是嵌入在HTML中的服務器端腳本語言。它用于管理動態(tài)內(nèi)容,數(shù)據(jù)庫,會話跟蹤,甚至建立整個電子商務網(wǎng)站。它與許多流行的數(shù)據(jù)庫集成,包括MySQL,PostgreSQL,Oracle,Sybase,Informix和Microsoft SQL Server。PHP在其執(zhí)行過程中令人愉快,特別是在Unix端編譯為Apache模塊時更是如此。MySQL服務器一旦啟動,就會在記錄設(shè)置時間內(nèi)執(zhí)行非常復雜的查詢,并帶有巨大的結(jié)果集。PHP支持大量主要協(xié)議,如POP3,IMAP和LDAP。PHP4增加了對Java和分布式對象體系結(jié)構(gòu)(COM和CORBA)的支持,使n層開發(fā)成為第一次。PHP是寬容的:PHP語言試圖盡可能寬容。PHP語法是類C的。', '2015101@126.com','2020-12-1'),(4, 'MySQL 教程', 'MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫管理系統(tǒng))應用軟件之一。在此次教程中,會讓大家快速掌握 MySQL 的基本知識,并輕松使用 MySQL 數(shù)據(jù)庫。數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫。每個數(shù)據(jù)庫都有一個或多個不同的 API 用于創(chuàng)建,訪問,管理,搜索和復制所保存的數(shù)據(jù)。我們也可以將數(shù)據(jù)存儲在文件中,但是在文件中讀寫數(shù)據(jù)速度相對較慢。所以,現(xiàn)在我們使用關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)來存儲和管理大數(shù)據(jù)量。所謂的關(guān)系型數(shù)據(jù)庫,是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等數(shù)學概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。RDBMS 即關(guān)系數(shù)據(jù)庫管理系統(tǒng)(Relational Database Management System)的特點:1.數(shù)據(jù)以表格的形式出現(xiàn);2.每行為各種記錄名稱;3.每列為記錄名稱所對應的數(shù)據(jù)域;4.許多的行和列組成一張表單;5.若干的表單組成database', '2015222@qq.com','2020-12-1'),(5, 'web前端知識體系梳理', '現(xiàn)在是信息時代,經(jīng)過 web1.0 時期、web2.0 時期到現(xiàn)在的移動互聯(lián)網(wǎng)時期,信息獲取越來越高效,坐著不動就會有大量的新聞、博客、資訊向你推薦而來。作為一名靠譜的程序員,你免不了要查閱大量的文章、視頻和書籍來充斥你的知識量,不斷學習。但是現(xiàn)在網(wǎng)上大量的信息堆積起來,對于你來說意味著什么?你如何去合理的篩選、梳理這些獲得的信息,又如何去知道自己現(xiàn)在還缺什么信息?到這里就應該提出本文的主題 —— 知識體系 。其實無論針對哪個知識領(lǐng)域,它都是有一套完整的、成型的知識體系和標準作為支撐的,例如數(shù)學、建筑、醫(yī)學、機械等等,當然包括計算機編程,其中肯定包括前端開發(fā)。有了完善的知識體系,再來面對大量的信息獲取,你就知道每個信息所說的知識點是屬于知識體系中的哪個部分。同時,你也會很清楚自己哪些部分掌握的好,哪些部分掌握的不好,甚至哪些部分自己壓根都沒聽說過。現(xiàn)在不一樣了,網(wǎng)速越來越快、瀏覽器和 JS 引擎足夠強大,而且 vue React 等框架流行開來,使得前端 JS 的業(yè)務邏輯越來越大,這些基礎(chǔ)知識必須掌握。最后別忘了,nodejs 都盛行多年了,這可讓 JS 運行到 server 了,和 php java 等干一樣的事情。最后補充一句。其實編程基礎(chǔ)也不止這幾個,像編碼、編譯原理、計算機組成、網(wǎng)絡等這些都是基礎(chǔ),但是并不會和前端開發(fā)直接相關(guān)(或者和我們?nèi)粘i_發(fā)相關(guān)性不大),這里就不再深究了。有興趣的讀者,可以自己繼續(xù)補充。', '2015101@126.com','2020-12-1'),(6, '后臺開發(fā)知識點', '多線程和多進程區(qū)別:1.進程之間數(shù)據(jù)分開,進程間通信需要特殊的ipc機制(管道,信號量,共享內(nèi)存,消息隊列),線程存在于進程內(nèi),線程之間共享進程的堆區(qū)間,全局靜態(tài)存儲區(qū),而各自擁有自己獨立的??臻g,同步數(shù)據(jù)用互斥量;2.進程的創(chuàng)建,銷毀,切換復雜,速度慢,線程是輕量級進程。;3.進程占用內(nèi)存多,cpu利用率低。線程占用內(nèi)存少,CPU利用率高。;4.進程之間不會互相影響,進程的一個線程掛掉則會導致整個進程掛掉。線程私有內(nèi)容:線程id,寄存器值,棧內(nèi)存,線程的調(diào)度策略,線程的私有數(shù)據(jù),errno變量', '2015201@126.com','2020-12-1'),(7, 'web后臺開發(fā)需要學習哪些知識', 'web后臺開發(fā)需要學習的知識有HTML、CSS、JavaScript、DOM、Web服務器、服務器腳本語言、數(shù)據(jù)庫及SQL語言以及baiweb框架。web后臺開發(fā)學習步驟:1、學習HTML和CSS。HTML(超文本標記語言)是網(wǎng)頁的核心,學好HTML是成為Web開發(fā)人員的基本條件。學習CSS了,它可以幫你把網(wǎng)頁做得更美觀。利用HTML和CSS模擬一些你所見過的網(wǎng)站的排版和布局(色彩,圖片,文字樣式等等)。2、學習javascript,了解DOM。JavaScript是一種能讓你的網(wǎng)頁更加生動活潑的程序語言。學習JavaScript的基本語法,學會用javascript操作網(wǎng)頁中dom元素。接著學習使用一些javascript庫,比如jquery是大部分WEB開發(fā)人員都喜歡用的,通過Jquery可以有效的提高JavaScript的開發(fā)效率。3、了解Web服務器。學習一點Unix和Linux的基本知識,因為大部分Web服務器都運行在Unix和Linux平臺上。4、學好一門服務器端腳本語言。目前流行的服務器腳本語言有:php、asp.net、jsp、ruby、python等??梢赃x一個自己喜歡的進行學習。5、學習數(shù)據(jù)庫及SQL語法。要構(gòu)建動態(tài)頁面通常會使用到數(shù)據(jù)庫,常用的數(shù)據(jù)庫有SQLServer、Oracle、MySQL 等,它們都會遵循標準的SQL原則。通常asp.net 程序使用SqlServer數(shù)據(jù)庫,PHP、java使用Oracle、MySQL數(shù)據(jù)庫。6、學習使用Web框架。當你掌握了HTML,CSS,JavaScript和服務器端腳本語言后,就應該找一個Web框架加快你的Web開發(fā)速度,使用框架可以節(jié)約你很多時間。', '2015203@126.com','2020-12-14'),(8, '詳細后端開發(fā)知識講解', '本片文章面向后端開發(fā),講述后端在進行開發(fā)時所使用的WEB服務器的工作流程,正所謂知根知底,WEB服務器是后端開發(fā)人員日常用于調(diào)試WEB程序和與前端通訊的一種方式!WEB服務器最為強大的地方是能夠執(zhí)行WEB程序,其WEB程序的編程語言并沒有明確的規(guī)定,因為只要你所使用的服務器支持這樣的程序就可以了!WEB服務器更像是一個平臺,在此平臺上編寫軟件我們稱其為WEB編程,注:WEB編程下有許多規(guī)范比如CGI,F(xiàn)astCGI等等,這個是要看服務器的支持范圍!不同服務器所使用的規(guī)范不同,比如JSP服務器只能運行由JAVA EE編寫的WEB程序,不能用于運行像C/C++、Python等編程語言編寫而成的WEB程序!通常情況下的WEB服務器所使用的編程規(guī)范均為CGI編程、只能運行CGI規(guī)范的程序,除了一些例外的WEB服務器,比如JSP服務器!CGI是Common Gateway Interface的縮寫,其意義為公用網(wǎng)關(guān)接口,意思可以理解為:在WEB服務器上運行一個程序或腳本,并且WEB服務器要將腳本執(zhí)行結(jié)果返回給瀏覽器(客戶端)!規(guī)范的意思是,無論你使用任何語言編寫,都必須使用輸出函數(shù)(cout,printf,print)輸出HTML格式的數(shù)據(jù)信息,WEB服務器根據(jù)這些信息傳遞給瀏覽器,瀏覽器HTML樹并將其顯示到瀏覽器當中,即為一個WEB頁面!更加深層次的來說其實,無論你使用什么語言編寫,只要在WEB服務器中的配置文件中,使其支持CGI編程,然后將你編譯完成的二進制可執(zhí)行文件后綴名改為.cgi,最后前端頁面在使用get或post方法請求這個WEB程序,WEB服務器會自動執(zhí)行這程序并將其結(jié)果送回給瀏覽器(TCP/IP協(xié)議)!', '2015202@126.com','2020-12-15');
INSERT INTO `comment` (`commentNo`,`commentContent`, `adminMail`, `blogNo`, `commentDate`) VALUES (1, '寫得真好,棒!', '2015201@126.com', 1, '2020-12-12 12:20:20'), (2, '寫得不錯,可以一起交流學習。', '2015202@126.com', 2, '2020-12-12 12:21:20'), (3, '不錯不錯,解決了我的疑惑。', '2015102@126.com', 2, '2020-12-12 12:22:20'), (4, '文章寫得很好,棒!', '2015201@126.com', 3, '2020-12-12 12:20:20'), (5, '文筆不錯。', '2015102@126.com', 3, '2020-12-12 12:22:22'), (6, '可以可以,終于解決我的困惑了,感謝!', '201100@126.com', 4, '2020-12-12 12:20:20'), (7, '終于解決我的困惑了,感謝!', '2015100@126.com', 5, '2020-12-12 12:22:20'), (8, '解決我的困惑了,感謝!', '2015100@126.com', 1, '2020-12-12 12:21:21'), (9, '解決我的困惑了,感謝!', '2015100@126.com', 6, '2020-12-12 12:20:20'), (10, '解決我的困惑了,感謝!', '2015222@qq.com', 6, '2020-12-12 12:20:20'), (11, '解決我的困惑了,感謝!', '2015111@qq.com', 3, '2020-12-12 12:21:21'), (12, '超級管理員給你點贊!', 'super@126.com', 1, '2020-12-12 12:21:21'), (13, '解決我的困惑了,感謝!', '2015111@qq.com', 7, '2020-12-16 12:21:21'), (14, '超級管理員給你點贊!', 'super@126.com', 7, '2020-12-16 12:21:21'), (15, '超級管理員給你點贊!', 'super@126.com', 8, '2020-12-12 12:21:21'), (16, '解決我的困惑了,感謝!', '2015111@qq.com', 8, '2020-12-16 12:21:21'), (17, '寫得真好,棒!', '2015201@126.com', 8, '2020-12-12 12:20:20');

3、登錄驗證

當用戶在登錄頁面輸入賬號和密碼后點擊登錄時,會跳轉(zhuǎn)到下面的頁面進行驗證,其中用到session進行存儲賬號和密碼。

首先是判斷賬號密碼是否為空,接著是判斷賬號是否存在,密碼是否對應,若對應再判斷輸入的用戶是普通用戶還是管理員。

<?php
session_start();
?>
<meta name="viewport" charset="utf-8" content="width=device-width, initial-scale=1.0">
<?php
$admin = $_REQUEST['adminmail'];
$password = $_REQUEST['password'];

if ($admin == "" || $password == "") {
    echo '<script type="text/javascript">alert("用戶名密碼不能為空");location="signin.php";</script>';
    exit;
}
require_once "config.inc.php";
$demand = "select passWord,level,adminName from Admin where adminMail = '$admin'";
$res = mysqli_query($mysqli, $demand);
$power = mysqli_fetch_row($res);
$_SESSION["adminMail"]=$admin;
$_SESSION["passWord"]=$password;
$_SESSION["level"]=$power[1];
if ($power[0] == $password) {
    if ($power[1] == 'user') {
        $_SESSION["adminName"]=$power[2];
        header('location:user_index.php');
    } else if ($power[1] == 'super') {
        $_SESSION["adminName"]=$power[2];
        header('location:super_index.php');
    } else {
        echo '<script type="text/javascript">alert("未知錯誤,請聯(lián)系管理員");location="signin.php";</script>';
        exit;
    }
} else {
    echo '<script type="text/javascript">alert("用戶名或密碼錯誤,請重新登陸");location="signin.php";</script>';
}
mysqli_free_result($res);
mysqli_close($mysqli);

其中的require_once "config.inc.php";用于連接數(shù)據(jù)庫,代碼實現(xiàn)如下:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<?php
 $server="localhost";  //mysql服務器地址
 $user="root";         //登陸mysql的用戶名
 $pass="";   //登陸mysql的密碼
 $db_name="grblog";   //mysql中要操作的數(shù)據(jù)庫名

$mysqli=mysqli_connect($server,$user,$pass, $db_name);
  mysqli_query($mysqli,"SET NAMES 'utf8'");
?>

4、用戶注冊

首先判斷賬號密碼是否為空,接著判斷注冊賬號是否已經(jīng)存在。

<?php
session_start();
?>
<meta name="viewport" charset="utf-8" content="width=device-width, initial-scale=1.0">
<?php
$admin = $_REQUEST['adminmail'];
$adminName = $_REQUEST['adminName'];
$password = $_REQUEST['password'];
$level = 'user';
if ($admin == "" || $password == "") {
    echo '<script type="text/javascript">alert("用戶名或密碼不能為空");location="signup.php";</script>';
    exit;
}
require_once "config.inc.php";
if (mysqli_connect_errno()) {
    die("Failed to connect to MySQL: (" . mysqli_connect_errno() . ") " . mysqli_connect_error());
}
$demand1 = "INSERT INTO admin values('$admin','$adminName','$password','$level')";
$res1 = mysqli_query($mysqli, $demand1);
if ($res1){
    $_SESSION['adminName'] = '';
    echo '<script type="text/javascript">alert("注冊成功!");location="signin.php";</script>';
}
else{
    echo '<script type="text/javascript">alert("該郵箱已注冊!");location="signup.php";</script>';
}

mysqli_free_result($res);
mysqli_free_result($res1);
mysqli_close($mysqli);

5、發(fā)表博客

首先判斷用戶是否已經(jīng)登錄,其次判斷輸入的數(shù)據(jù)是否滿足格式需求(是否為空)

<?php
session_start();
?>
    <meta name="viewport" charset="utf-8" content="width=device-width, initial-scale=1.0">
<?php
if ($_SESSION["adminName"] != "") {
    $blogTopic = $_REQUEST['blogTopic']; //博客主題
    $adminMail = $_SESSION["adminMail"];
    $blogContent = $_REQUEST["blogcontent"];
    date_default_timezone_set('Asia/Shanghai');//設(shè)置為北京時間
    $blogDate = date("Y-m-d");//自動獲取時間(年月日)
    require_once "config.inc.php";

//插入BLOG信息命令
    $demand = "INSERT INTO `blog` (`blogTopic`, `blogContent`, `adminMail`, `importDate`) values('$blogTopic','$blogContent','$adminMail','$blogDate')";
    $res = mysqli_query($mysqli, $demand);
    if ($res) { //跳轉(zhuǎn)頁面
        mysqli_close($mysqli); //查詢已經(jīng)結(jié)束,在這里關(guān)閉連接
        echo '<script>alert("博客發(fā)表成功");location="super_myblogs.php";</script>';
    } else {
        mysqli_close($mysqli);
        echo '<script>alert("博客發(fā)表失敗");location="super_insert_blog.php";</script>';
    }
}
else{
    echo '<script>alert("請先登錄!");location="signin.php";</script>';
}
?>

6、更新博客

這里是以普通用戶為例,首先判斷是否已經(jīng)登錄 ,接著判斷是否具有更改博客的權(quán)限(非自己博客不能更改),最后判斷輸入的數(shù)據(jù)是否滿足格式需求(是否為空)

<?php
session_start();
?>
<meta name="viewport" charset="utf-8" content="width=device-width, initial-scale=1.0">
<?php
if ($_SESSION["adminName"] != "") {
    $blogTopic = $_REQUEST['blogTopic']; //博客主題
    $adminMail = $_SESSION["adminMail"];
    $blogContent = $_REQUEST["blogcontent"];
    $blogno = $_SESSION['no_blog'];
    require_once "config.inc.php";

    $demand = "select adminMail from blog where blogNo = '$blogno'";
    $res = mysqli_query($mysqli, $demand);
    $power = mysqli_fetch_row($res);
    $mail = $power[0];

    if ($mail == $adminMail){
        //插入BLOG信息命令
        $demand2 = "UPDATE `blog` SET `blogTopic` = '$blogTopic',`blogContent` = '$blogContent' WHERE `blog`.`blogNo` ='$blogno'";
        $res2 = mysqli_query($mysqli, $demand2);
        if ($res2) { //跳轉(zhuǎn)頁面
            mysqli_close($mysqli); //查詢已經(jīng)結(jié)束,在這里關(guān)閉連接
            echo '<script>alert("博客修改成功");location="user_index.php";</script>';
        } else {
            mysqli_close($mysqli);
            echo '<script>alert("博客修改失敗");location="user_update_blog.php";</script>';
        }
    }else{
        echo '<script>alert("無權(quán)限!");location="user_index.php";</script>';
    }


} else {
    echo '<script>alert("請先登錄!");location="signin.php";</script>';
}
?>

7、刪除博客

這里普通用戶和管理員的代碼時基本一樣的,首先判斷是否登錄,接著判斷是否為普通用戶,若是,則判斷要刪除的博客是否為自己的博客,若為管理員,則無需判斷是否為自己的博客。

<?php
session_start();
?>
<meta name="viewport" charset="utf-8" content="width=device-width, initial-scale=1.0">
<?php
if ($_SESSION["adminName"] != "") {
    require_once "config.inc.php";
    $level = $_SESSION["level"];
    $mail_blog = $_SESSION['mail_blog'];
    $adminMail = $_SESSION["adminMail"];
    $no_blog = $_SESSION['no_blog'];

    if ($level == 'user') {
        if ($adminMail != $mail_blog) {
            echo '<script>alert("無權(quán)限!");location="user_index.php";</script>';
        } else {
            $demand = "delete from blog where blogNo = '$no_blog'";
            $res = mysqli_query($mysqli, $demand);
            if ($res) { //跳轉(zhuǎn)頁面
                mysqli_close($mysqli);
                echo '<script>alert("刪除博客成功");location="user_index.php";</script>';
            } else {
                mysqli_close($mysqli);
                echo '<script>alert("刪除博客失敗");location="user_index.php";</script>';
            }
        }
    } else {
        $demand = "delete from blog where blogNo = '$no_blog'";
        $res = mysqli_query($mysqli, $demand);
        if ($res) { //跳轉(zhuǎn)頁面
            mysqli_close($mysqli);
            echo '<script>alert("刪除博客成功");location="super_index.php";</script>';
        } else {
            mysqli_close($mysqli);
            echo '<script>alert("刪除博客失敗");location="super_index.php";</script>';
        }
    }
} else {
    echo '<script>alert("請先登錄!");location="signin.php";</script>';
}
?>

8、發(fā)表評論

注意評論不能為空。

<?php
session_start();
?>
<meta name="viewport" charset="utf-8" content="width=device-width, initial-scale=1.0">
<?php
if ($_SESSION["adminName"] != ""){
    require_once "config.inc.php";
    $email = $_SESSION['adminMail'];//用戶名
    $blogNo = $_SESSION['no_blog'];//博客號
    $new_comment =$_REQUEST['new_comment'];//新評論
    date_default_timezone_set('Asia/Shanghai');//設(shè)置為北京時間
    $commentDate=date('Y-m-d H:i:s');//自動獲取時間(年月日時間)
    $demand = "INSERT INTO `comment` (`commentContent`, `adminMail`, `blogNo`, `commentDate`) values('$new_comment','$email',$blogNo,'$commentDate')";
    $insertComment = mysqli_query($mysqli,$demand);
    if ($insertComment){
        echo '<script>alert("發(fā)表成功");location="user_index.php";</script>';
    }
    else{
        echo '<script>alert("輸入錯誤!");location="user_index.php";</script>';
    }
}
else{
    echo '<script>alert("請先登錄!");location="signin.php";</script>';
}
?>

9、修改密碼

首先判斷是否已經(jīng)登錄,接著判斷新密碼和第二次輸入的新密碼是否一致,再判斷原密碼是否正確。

<?php
session_start();
?>
<meta name="viewport" charset="utf-8" content="width=device-width, initial-scale=1.0">
<?php
if ($_SESSION["adminName"] != "") {
    require_once "config.inc.php";
    $email = $_SESSION['adminMail'];//用戶名
    $real_pwd = $_SESSION['passWord'];//真實密碼
    $past_pwd = $_REQUEST['past_pwd'];//原密碼
    $new_pwd = $_REQUEST['new_pwd'];//新密碼
    $pwd = $_REQUEST['new_pwd_2'];//第二次新密碼
    if ($new_pwd == $pwd) {
        if ($real_pwd == $past_pwd) {
            $sql = "update admin set password = '$pwd' where adminMail='$email'";
            $updatepwd = mysqli_query($mysqli, $sql);
            if ($updatepwd) {
                echo '<script>alert("密碼修改成功,請重新登錄");location="signin.php";</script>';
            } else {
                echo '<script>alert("未知錯誤!");location="user_update_pwd.php";</script>';
            }
        } else {
            echo '<script>alert("原密碼輸入錯誤!");location="user_update_pwd.php";</script>';
        }

    } else {
        echo '<script>alert("兩次密碼輸入不相同!");location="user_update_pwd.php";</script>';
    }
} else {
    echo '<script>alert("請先登錄!");location="signin.php";</script>';
}
?>

10、修改昵稱

<?php
session_start();
?>
<meta name="viewport" charset="utf-8" content="width=device-width, initial-scale=1.0">
<?php
if ($_SESSION["adminName"] != "") {
    require_once "config.inc.php";
    $email = $_SESSION['adminMail'];//用戶名
    $new_name = $_REQUEST['new_name'];//新昵稱
    $sql = "update admin set adminName = '$new_name' where adminMail='$email'";
    $updatename = mysqli_query($mysqli, $sql);
    if ($updatename) {
        $_SESSION["adminName"] = $new_name;
        echo '<script>alert("昵稱修改成功");location="user_index.php";</script>';
    } else {
        echo '<script>alert("輸入錯誤!");location="user_update_name.php";</script>';
    }
} else {
    echo '<script>alert("請先登錄!");location="signin.php";</script>';
}
?>

11、管理員刪除用戶

需要注意的是,刪除用戶的同時會刪除有關(guān)他的所有信息,包括他發(fā)表的博客和評論。

<?php
session_start();
?>
<meta name="viewport" charset="utf-8" content="width=device-width, initial-scale=1.0">
<?php
if ($_SESSION["adminName"] != "") {
    require_once "config.inc.php";
    $admai = $_GET['delete_mail'];
    $sql = "delete from admin where adminMail='$admai'";
    $delete = mysqli_query($mysqli, $sql);

    $sql2 = "delete from blog where adminMail='$admai'";
    $delete2 = mysqli_query($mysqli, $sql2);
    $sql3 = "delete from comment where adminMail='$admai'";
    $delete2 = mysqli_query($mysqli, $sql3);
    echo '<script>alert("刪除成功");location="super_user.php";</script>';

} else {
    echo '<script>alert("請先登錄!");location="signin.php";</script>';
}
?>

四、運行環(huán)境

APMServ 5.2.6 for Windows 2000/XP/2003

五、運行說明

1、以管理員身份運行APMServ,啟動服務器,點擊管理MySQL數(shù)據(jù)庫;

2、將數(shù)據(jù)庫設(shè)計源碼(.sql文件)中的數(shù)據(jù)導入數(shù)據(jù)庫當中;

3、最后點擊訪問用戶本地網(wǎng)站,找到我們解壓后的源代碼的目錄并點擊(記得事先將項目文件放到APMServ5.2.6\www\htdocs目錄下);

4、找到signin.php文件并點擊即可進入登錄頁面;

5、若想體驗登錄后的功能,可以點擊用戶中心下的登錄并輸入賬號密碼即可。

(如輸入普通用戶賬號:2015100@126.com 密碼:pwdpwd;

或者管理員賬號:super@126.com 密碼:superpwd)

以上就是關(guān)于“基于PHP怎么實現(xiàn)個人博客網(wǎng)站”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI