巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
建站专提News

PHP仿博客园 小我博客(1) 数据库与界面设想

一佰互联网站开辟设想(www.taishanly.com) 宣布日期 2020-04-29 09:02:35 阅读数: 270

自学PHP泰半年多了,断断续续地,可是终究仍是果断了我的设法,将PHP持续下去,以是写这个PHP的博客是为了找个不变的 PHP任务,不求人为多高,但求一收容之地。我能看懂大局部英语文档,人不蠢,爱进修,有乐趣地能够或许接洽下!有至心的来吧!qq:240382473
我会分3-5次宣布一切关头代码和文档申明,博客背景一切的款式均套用博客园! 申明: 1. 不完整接纳MVC架构,可是理念便是如许的。由于还不能写出很不变的MVC架构。
2.几近不接纳JQUERY AJAX 由于不是出格熟习,应用起来还不自若,留言本能够或许用AJAX,没题目。
3.有几个公用类,其余代码均手写,有缺乏地处所请多多指出,很是感激。
4.接待攻讦与指点,可是请给出你的来由。 言反正传:先看数据库架构

这些表的引擎都是MYISAM, 利于存取。(黄色钥匙表现的是 primary key; 蓝色菱形的表现非空字段; 白色菱形表现的 null 字段) 图中的链接仅表现他们之间有一种潜伏干系,没法在操纵时接洽关系.由于搜刮引擎是 MyISAM。 以是须要结合查问, 和多表操纵。 我会挑最主要的 post , category 2个表中的出格字段来具体申明,其余说主要的。
post:
post_id
category_id varchar(10) 这个是用来索引博文的分类, 这里的category_id 也是字符串范例,以是能够或许为每个博文设置多个分类。 type varchar(20) 这个字段是用来辨别 漫笔(post),文章(article),和日志(diary)的; 同时也是能够或许 设置为 postDraft, articleDraft ; visiable 博文是不是可见 其余经常利用字段如 标题,内容,建立时辰,最初点窜时辰,阅读次数,批评次数,标签,许可批评,和些保留字段。 category:
parent, count_child_number, count_parent_number 用于今后扩大
type 能够或许别离设置相册、博文、日志的分类
其余经常利用字段如 称号,描写,建立时辰,可见性
comment:
address 用户IP
user_agent 用户阅读器范例 别的字段略...
办事器架构
PHP5.4.2 + MYSQL 5.523 + APACHE 2.2.22 + Windows NT ARIST-PC 6.1 build 7600 (Windows 7 Home Basic Edition) i586 (本地)
博客架构 背景目次:

背景目次申明: assert 寄存各类资本 js,css,image
class 寄存咱们的类 经常利用类如 数据库操纵类,分页类,和咱们的大局部model 。。。
extention 寄存些扩大 如 mce 的富编辑器
config 寄存咱们的 设置装备摆设信息
templates 寄存一切的模版(不接纳 smarty)
upload 寄存的是相片和其余文件
admin 根目次下会有一些近似的节制器 如 index.php, post.php, article.php, photo.php 咱们先看看 admin/config/config.php
复制代码 代码以下:
<?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 */
}
}
这里咱们界说了一些根基常量,和几个函数。 __autoload() 函数加载 admin/class/ 中的一切类
用 hasher() 函数加密了一个 88位的 不可逆暗码, 登录进程便是用config.php 中的常量和 hasher( ) 函数来停止考证。 来看咱们的 admin/index.php 背景节制器 这个节制器主页 显现一些博客的相干数据
复制代码 代码以下:
<?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 ");
}
这个设想形式是从一个老外那边学的! 道理便是:
起首咱们加载咱们的config.php, 初始化session变量,取得 $action 这个主要变量的值;
而后咱们判定 $action 和 $username 的值, 若是用户不登录和用户名为空,前往登录页面;
若是用户准确输出了用户名和暗码,则注册一个session 变量 $username,而后跳转到主页面 index.php, 这时辰咱们会挪用默许的 $action admin( ), 这个函数会加载一个模版admin.php;外面有个数组变量 $results["pageTitle"],和咱们的背景博客款式框架。
若是用户输出错了,则给出提醒信息。 这个设想理念的焦点便是, give {action} then {do something}
咱们会在前面的代码中频频看到。 这个便是博客背景的框架款式,从博客园copy 来的,接纳表格规划的,兼容的,可自界说其余款式的,简略的,适用的,可扩大的,完善背景框架。

这个款式在其余的阅读器中表现一样兼容,写这篇博文的时辰,我已完成了局部功效。 下一篇:完成漫笔,文章,日志 和他们分类的CRUD。
ps:这些操纵还不利用ajax,由于我对ajax还不熟习。
一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。更多资讯:tags标签

相干动静more

20
04月
让IE撑持HTML5的体例

愈来愈多的站点起头利用 HTML5 标签,可是今朝的环境是另有良多人在利用IE6、IE7、IE8。为了让一切阅读者都能够或许一般的拜候,处理计划... >>概况

06
03月
收费自助建站哪一个最好?巅云疾速网页建造体系,

一款跨时期好用不可求网页建造体系,辞别DW纯手工代码时期,可视化拖沓排版机制。将经常利用网站功效如:文章,产物,图文,图片轮换等功效以模块化的方... >>概况

20
04月
HTML5之HTML元素扩大(上)—新增添的

斟酌咱们开辟一个页面的进程:1.设想页面的布局 - HTML:这个进程是利用各类HTML元素构建网页的布局。2.设想页面的表面 - CSS:... >>概况

15
04月
挑战双十一 申通中通韵达等六大快递公司进步派

09月16日报道:公家号“物流指闻”15日晚动静,称连续接到粉丝爆料,六大天下性加盟快递企业,同步请求一切派件网点的... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站