自学了半年多的PHP,很多次,但我终于坚定了我的想法,继续php。所以写这个PHP博客是为了找到一个稳定的PHP工作,不要要求高工资,而是要求一个地方停留。我能理解大部分的英语文档,人们不笨,喜欢学习,可以感兴趣的联系。真诚地来。QQ:240382473。
我将把所有的关键代码和文档发布3-5次,博客中的所有样式都在博客的花园中使用!

解释uff1a

1。MVC架构并不是完全采用的,但这是一个想法,因为您不能编写一个非常稳定的MVC体系结构。
2。几乎不使用jQuery,因为它不是特别熟悉,使用起来不容易,可以用ajax的消息,没问题。
三.有几个公开课,其他代码都是手写的,有不足的地方请多指一点,非常感谢。
4。欢迎批评和指导,但请给出理由。

现在看一下数据库模式



这些表的引擎是MyISAM的访问。(黄色键是主键;蓝钻石代表非空字段;白钻空字段)。图中的链接只表示它们之间的潜在关系,不能与操作相关联。因为搜索引擎是MyISAM。所以有必要联合查询和多表操作。

我会挑出2类表中最重要的帖子,特别的字段,其他的都很重要。
后:
post_id
category_id varchar(10)采用Bowen的分类指数。这里的category_id是字符串类型,所以我们可以设定每个博客多分类。

Type varchar(20)是用来区分散文(后),文章(文章)和日记(日记),也可以设置为postdraft,articledraft。

无论是有形可见的博客

其他常见的字段,如标题、内容、创建时间、最后更改时间、浏览时间、评论时间、标签、允许注释和一些保留字段。

类别:
父母,count_child_number,未来的扩展count_parent_number
类型可以分别设置相册、文本和日记的分类。
其他常用领域,如名称、描述、创建时间、可见性
评论:
用户的IP地址
user_agent用户浏览器的类型

其他字段稍有…
服务器的体系结构
php5.4.2 + MySQL + 5.523 + Apache 2.2.22 Windows NT arist-pc 6.1 Build 7600(Windows 7家庭基本版)
博客架构

后台目录:



后台目录解释:

断言存储各种资源JS、CSS、图像
类存储类公共类,如数据库操作类、分页类和大多数模型。
扩展存储了丰富的编辑,如MCE
配置存储我们的配置信息
模板存储所有的模板(不聪明)
上传存储在照片和其他文件中。
有在管理根目录比如index.php,post.php,article.php一些类似的控制器,photo.php

让我们看看管理 / / config.php配置第一
复制代码代码如下所示:
< PHP
ini_set(display_errors
date_default_timezone_set(亚洲/上海);
与单独的 / /根目录
定义('ds ',directory_separator);
定义('root目录(目录(__file__)));

数据库信息
需要散列
定义(db_username
定义(db_password
定义(db_name

重要的目录
定义(class_path
定义(template_path

用户/信息
定义(admin_username
定义(admin_password
并验证密码哈希
功能更强硬的(美元的信息,encdata美元= false){
$ =08;
如果传递了加密数据,请检查它是否与输入($信息)相关。
如果($ encdata){
如果(substr(encdata美元,0, 60)=隐窝(美元的信息,2美元$ 。合强度。美元。substr(encdata美元,60))){
返回true;
{ }人
返回false;
}
{人}
制作一个盐,用输入散列,然后加盐。
=盐;
($ i = 0;$ i < 22;$ + +){
盐= substr(美元/ abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789 。
}
返回82个字符字符串(60个字符散列22个字符)
返回隐窝($信息, $ 2a 。$ $盐;
}
}

功能__autoload($ className){
如果(file_exists(根。'classes的DS。DS。Strtolower($ className)类。'/library/loader.php')){
require_once(根。'classes的DS。DS。Strtolower($ className)类。'/library/loader.php');
{人}
错误生成代码在这里/ ***
}
}


这里我们定义了一些基本常数和几个函数。

的__autoload()函数加载所有的类在管理员/班/
一个88位的密码是不可逆加密的散列()函数,和登录过程是在不断的使用和更强硬的config.php()函数验证。

看看我们的管理员 /的index.php后端控制器,控制器的主页,显示出一些博客的相关数据
复制代码代码如下所示:
< PHP
require_once(配置 / config. php );
session_start();
行动= isset(美元美元_get {整套' }){ }:_get美元整套;
用户名= isset($美元_session { 'username ' }){ }:_session美元'username;

如果($)动作!=登录$操作!=注销!$用户名){
Login();
出口;
}

开关($动作){
案例登录:
Login();
打破;

案例注销;
注销();
打破;

违约:
管理员();
打破;
}

函数登录(){
结果'pagetitle'} {美元=登录表单;
句柄登录
If (isset ($_POST{'login'})) {
我们从常量常量/变量中简单地验证它。
我们需要从数据库验证用户,稍后再做
$用户=新用户;
/ /用户名-> isvalidateuser($name,$密码);

如果($ _post { } = = admin_username 'username_post美元{ 'password} =厨师($ _post { 'password},admin_password)){
会话数据寄存器
_session美元{ 'username} = admin_username;
到管理页面位置
页眉(位置:索引);
{人}
登录失败:向用户显示错误消息
结果'errormessage } = {美元的用户名或密码错误。请再试一次;
要求(template_path。 / LoginForm。PHP );
}
{ { { }
要求(template_path。 / LoginForm。PHP );
}
}

函数管理(){
结果'pagetitle'} {美元=管理员页面;
要求(template_path。;
}

功能注销(){
结果'pagetitle } = {美元的登录页;
撤消($ _session { 'username});
页眉(位置:索引);
}


这个设计模型是从一个老老外那里学到的。

原则是:
首先,我们把config.php,初始化会话变量,得到$行为的重要变量的值;
然后我们判断$操作和$用户名的值,如果用户不登录,用户名是空的,返回到登录页面。
如果用户输入正确的用户名和密码,然后登记一个session变量为用户名,然后跳到index.php首页,然后我们将调用默认为行动(admin),这个函数将加载模板admin.php;有$结果{阵列variable'pagetitle},和我们的博客风格背景框架。
如果用户输入错误,则给出提示信息。

这个设计思想的核心是,给{ }然后{做某事}
我们将在代码后面一次又一次地看到它。

这是博客后台框架风格。从复制,我们使用表格布局,兼容,可定制,简单,实用,可扩展和完善的后台框架。



这种风格是与其他浏览器同样兼容,而我所做的一些功能写这个博客的时候,下一个问题:实施的文章,文章、日记、及其分类的增删改查。


ps:这些操作还没有使用Ajax,因为我不熟悉Ajax。