一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP仿博客園 個(gè)人博客(1) 數(shù)據(jù)庫(kù)與界面設(shè)計(jì)

自學(xué)php大半年多了,斷斷續(xù)續(xù)地,但是最終還是堅(jiān)定了我的想法,將php繼續(xù)下去,所以寫這個(gè)php的博客是為了找個(gè)穩(wěn)定的 php工作,不求工資多高,但求一收留之地。我能看懂大部分英語文檔,人不蠢,愛學(xué)習(xí),有興趣地可以聯(lián)系下!有誠(chéng)意的來吧!qq:240382473
我會(huì)分3-5次發(fā)布所有關(guān)鍵代碼和文檔說明,博客后臺(tái)所有的樣式均套用博客園!

說明:

1. 不完全采用MVC架構(gòu),但是理念就是這樣的。因?yàn)檫€不能寫出很穩(wěn)定的MVC架構(gòu)。
2.幾乎不采用JQUERY AJAX 因?yàn)椴皇翘貏e熟悉,運(yùn)用起來還不自如,留言本可以用AJAX,沒問題。
3.有幾個(gè)公用類,其他代碼均手寫,有不足地地方請(qǐng)多多指出,非常感謝。
4.歡迎批評(píng)與指導(dǎo),但是請(qǐng)給出你的理由。

言歸正傳:先看數(shù)據(jù)庫(kù)架構(gòu)

這些表的引擎都是MYISAM, 利于存取。(黃色鑰匙表示的是 primary key; 藍(lán)色菱形的表示非空字段; 白色菱形表示的 null 字段) 圖中的鏈接僅表示他們之間有一種潛在關(guān)系,無法在操作時(shí)關(guān)聯(lián).因?yàn)樗阉饕媸?MyISAM。 所以需要聯(lián)合查詢, 以及多表操作。

我會(huì)挑最重要的 post , category 2個(gè)表中的特別字段來詳細(xì)說明,其他說重要的。
post:
post_id
category_id varchar(10) 這個(gè)是用來索引博文的分類, 這里的category_id 也是字符串類型,所以可以為每一個(gè)博文設(shè)置多個(gè)分類。

type varchar(20) 這個(gè)字段是用來區(qū)分 隨筆(post),文章(article),和日記(diary)的; 同時(shí)也是能夠 設(shè)置為 postDraft, articleDraft ;

visiable 博文是否可見

其他常用字段如 標(biāo)題,內(nèi)容,創(chuàng)建時(shí)間,最后改動(dòng)時(shí)間,瀏覽次數(shù),評(píng)論次數(shù),標(biāo)簽,允許評(píng)論,以及些保留字段。

category:
parent, count_child_number, count_parent_number 用于以后擴(kuò)展
type 可以分別設(shè)置相冊(cè)、博文、日記的分類
其他常用字段如 名稱,描述,創(chuàng)建時(shí)間,可見性
comment:
address 用戶IP
user_agent 用戶瀏覽器類型

其它字段略...
服務(wù)器架構(gòu)
php5.4.2 + MYSQL 5.523 + APACHE 2.2.22 + Windows NT ARIST-PC 6.1 build 7600 (Windows 7 Home Basic Edition) i586 (本地)
博客架構(gòu)

后臺(tái)目錄:

后臺(tái)目錄說明:

assert 存放各種資源 js,css,image
class 存放我們的類 常用類如 數(shù)據(jù)庫(kù)操作類,分頁(yè)類,和我們的大部分model 。。。
extention 存放些擴(kuò)展 如 mce 的富編輯器
config 存放我們的 配置信息
templates 存放所有的模版(沒有采用 smarty)
upload 存放的是相片和其他文件
admin 根目錄下會(huì)有一些類似的控制器 如 index.php, post.php, article.php, photo.php

我們先看看 admin/config/config.php
復(fù)制代碼 代碼如下:
<?php
ini_set( "display_errors", true );
date_default_timezone_set( "Asia/Shanghai" );
// root and direcotry separate
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(dirname(__FILE__)));

// database information
// need hash
define( "DB_USERNAME", "****" );
define( "DB_PASSWORD", '*****' );
define( "DB_NAME", "blog" );

// important directory
define( "CLASS_PATH", "classes" );
define( "TEMPLATE_PATH", "templates" );

// user imformation
define( "ADMIN_USERNAME", "admin" );
define( "ADMIN_PASSWORD", '$2a$08$wim8kpwHhAKa6MBSsGUMGOYfjkU1xvRKd4Fxwal.wj8dqFboCVSFawim8kpwHhAKa6MBSsGUMGO');
// hash and verified the password
function hasher($info, $encdata = false){
$strength = "08";
//if encrypted data is passed, check it against input ($info)
if ($encdata) {
if (substr($encdata, 0, 60) == crypt($info, "$2a$".$strength."$".substr($encdata, 60))) {
return true;
}else {
return false;
}
} else {
//make a salt and hash it with input, and add salt to end
$salt = "";
for ($i = 0; $i < 22; $i++) {
$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mt_rand(0, 63), 1);
}
//return 82 char string (60 char hash & 22 char salt)
return crypt($info, "$2a$".$strength."$".$salt).$salt;
}
}

function __autoload($className) {
if (file_exists(ROOT . DS . 'classes' . DS . strtolower($className) . '.class.php')) {
require_once(ROOT . DS . 'classes' . DS . strtolower($className) . '.class.php');
} else {
/* Error Generation Code Here */
}
}


這里我們定義了一些基本常量,和幾個(gè)函數(shù)。

__autoload() 函數(shù)加載 admin/class/ 中的所有類
用 hasher() 函數(shù)加密了一個(gè) 88位的 不可逆密碼, 登錄過程就是用config.php 中的常量和 hasher( ) 函數(shù)來進(jìn)行驗(yàn)證。

來看我們的 admin/index.php 后臺(tái)控制器 這個(gè)控制器主頁(yè) 顯示一些博客的相關(guān)數(shù)據(jù)
復(fù)制代碼 代碼如下:
<?php
require_once( "config/config.php" );
session_start( );
$action = isset( $_GET['action'] ) ? $_GET['action'] : "";
$username = isset( $_SESSION['username'] ) ? $_SESSION['username'] : "";

if ( $action != "login" && $action != "logout" && !$username ) {
login();
exit;
}

switch( $action ){
case "login" :
login( ) ;
break;

case "logout";
logout( );
break;

default :
admin( );
break;
}

function login( ){
$results['pageTitle'] = "Login Form";
// handle login
if( isset( $_POST['login'] ) ){
// we simple verify it from constant variable
// if we need to verify the user from database , do this later
// $user = new User ;
// $user->isValidateUser( $name, $password );

if ( $_POST['username'] == ADMIN_USERNAME && $_POST['password'] == hasher($_POST['password'], ADMIN_PASSWORD ) ){
// register a session data
$_SESSION['username'] = ADMIN_USERNAME ;
// location to admin page
header( "Location: index.php");
} else {
// Login failed: display an error message to the user
$results['errorMessage'] = "Incorrect username or password. Please try again.";
require( TEMPLATE_PATH . "/loginForm.php" );
}
} else {
require( TEMPLATE_PATH . "/loginForm.php" );
}
}

function admin( ){
$results['pageTitle'] = "Administrator Page";
require( TEMPLATE_PATH . "/admin.php" );
}

function logout( ){
$results['pageTitle'] = "Login Page";
unset( $_SESSION['username'] );
header( "Location: index.php ");
}


這個(gè)設(shè)計(jì)模式是從一個(gè)老外那里學(xué)的!

原理就是:
首先我們加載我們的config.php, 初始化session變量,獲得 $action 這個(gè)重要變量的值;
然后我們判斷 $action 和 $username 的值, 如果用戶沒有登錄以及用戶名為空,返回登錄頁(yè)面;
如果用戶正確輸入了用戶名和密碼,則注冊(cè)一個(gè)session 變量 $username,然后跳轉(zhuǎn)到主頁(yè)面 index.php, 這時(shí)我們會(huì)調(diào)用默認(rèn)的 $action admin( ), 這個(gè)函數(shù)會(huì)加載一個(gè)模版admin.php;里面有個(gè)數(shù)組變量 $results['pageTitle'],以及我們的后臺(tái)博客樣式框架。
如果用戶輸入錯(cuò)了,則給出提示信息。

這個(gè)設(shè)計(jì)理念的核心就是, give {action} then {do something}
我們會(huì)在后面的代碼中反復(fù)看到。

這個(gè)就是博客后臺(tái)的框架樣式,從博客園copy 來的,采用表格布局的,兼容的,可自定義其他樣式的,簡(jiǎn)單的,實(shí)用的,可擴(kuò)展的,完美后臺(tái)框架。

這個(gè)樣式在其他的瀏覽器中表現(xiàn)同樣兼容,寫這篇博文的時(shí)候,我已完成了部分功能。 下一篇:實(shí)現(xiàn)隨筆,文章,日記 以及他們分類的CRUD。


ps:這些操作還沒有使用ajax,因?yàn)槲覍?duì)ajax還不熟悉。

php技術(shù)PHP仿博客園 個(gè)人博客(1) 數(shù)據(jù)庫(kù)與界面設(shè)計(jì),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 精品国产免费一区二区 | 99久久99| 91人碰| 怡红院最新网址 | 小说区亚洲区 | 中文精品一卡2卡3卡4卡 | a一级一色一情 | 色黄小视频 | 91视频看看 | 二区国产 | 成人的天堂视频一区二区三区 | 国产小视频在线免费 | 亚洲一区二区三区视频 | 最新国产精品精品视频 | 久久精品亚洲欧美日韩久久 | 综合色亚洲 | 国产线视频精品免费观看视频 | 婷婷狠狠操 | 超91在线| 天天天干 | 久久久久国产视频 | 亚洲无吗视频 | 中文字幕一区二区在线观看 | 亚洲欧美手机在线观看 | 成人国产第一区在线观看 | 亚洲毛片视频 | 在线视频 一区二区 | 欧美成人性色区 | 国产一级特黄一级毛片 | 亚洲综合91| 色综合天天综合中文网 | 中文字幕亚洲国产 | 国产乱理 | 久久精品视频9 | 国产视频一区二区在线观看 | 一区二区日韩 | 国产极品一区 | 国产私拍福利精品视频网站 | 中文婷婷| 欧美日韩一区视频 | 日本精品一区二区三区视频 |