HDWiki/运行机制和原理

来自站长百科
跳转至: 导航、​ 搜索

HDWiki | HDWiki使用 | HDWiki插件

基本原理[ ]

HDwiki是基于URL编程的方式。

HDwiki运行机制和原理很简单,一句话:通过传入特定的URL以分发给相应的控制器中某个函数进行处理,最后将控制器处理后信息呈现于所包含的视图中。

WEB开发中,主要工作无外呼是显示页面和提交表单这两个工作。因此控制器通过URL访问来确定显示页面,得到信息后那么只需要显示的视图”。而处理表单只需要处理完后重定向或者输出某个信息。

为了最简单完成MVC模式开发的要求,在开发过程中,需要遵循3个规则:

1、URL中都必须带有两个参数 ,分别是control和method,用于表明改URL将由哪一控制器及方法处理

2、表单提交中的参数统一被处理,防SQL注入等,在一个control的方法里面不能带用$_POST或$_GET。如果要访问表单提交的参数,则通过$this->post['username']或 $this->get[3]类似的形式。

3、控制器类的文件名定义了控制器能做到事情,如user.php,表示这个是和用户相关的控制器,所以注册登录等都应该写道user.php里面。这里框架设计的时候,考虑到不需要控制器去调用控制器,所以所有的控制器的类名都是相同,名字就叫做 control

另外注意linux下区分大小写,建议统一使用小写.

HDwiki运行机制和原理[ ]

index.php文件中有两个参数control和method,此两个参数会交由../model/HDwiki.class.php文件以分发到user控制器中的doregister方法,也就是说control和method用来指定哪一控制器和控制器中的那个方法处理。最后将处理后的数据显示到view下view/default/register.htm中.

如何找到HDwiki相关代码[ ]

当大家想改动某个功能的代码的时候,一定要先看清这个功能的URL。

例如:浏览词条的URL为 :doc-view-1

那么,说明这个浏览词条的相关代码在 control/doc.php 里面的 doview方法。

其中URL中的第一段为doc,表明代码在 control/doc.php 里面,第二段为view,表示调用的方法是 doview

再如:百科分类的URL为:category.html

其中URL中的第一段为category,表明代码在 control/category.php 里面,第二段为空,表示调用的方法是默认方法 dodefault

例子:想改动后台seo设置的代码

后台的SEO设置的url为:index.php?admin_setting-seo

那么,你就找到 control/admin_setting.php 这个文件

然后 查找 function doseo()

这个里面的代码就是你需要改动的地方。

开发实例[ ]

步骤:

(1)、建立注册的模板页面 view\default\register.htm

(2)、 打开control目录,建立一个文件user.php,代码内容如下:

<?php

!defined('IN_HDwiki') && exit('Access Denied');
 
class control extends base{

    function control(& $get,& $post){
        $this->base( & $get,& $post);
        $this->load('user');
    }
    

     function doregister() {
         
        if(!isset($this->post['submit'])){
              $this->view->display('register');
              exit;
        }
        $user_nick=$this->post['nick_name'];
        $password=$this->post['password'];
        $this->post['re_password'];
        $email=$this->post['email_addr'];
        $_ENV['user']->add_user($user_nick, $password, $email);
        echo '恭喜 <b>'.$user_nick.'</b> 注册成功!';
    }

}
    
?>

(3)、打开model目录,建立一个文件user.class.php ,代码内容如下:

<?php

!defined('IN_HDwiki') && exit('Access Denied');

class usermodel {

    var $db;
    var $base;

    function usermodel(&$base) {
        $this->base = $base;
        $this->db = $base->db;
    }
    
    function add_user($user_nick, $password, $email) {
        $password = md5($password);
        $user_nick_upper=strtoupper($user_nick);
        $this->db->query("
             INSERT INTO ".DB_TABLEPRE."user(user_email,user_nick,user_nick_upper,user_password)
             values ('$email','$user_nick','$user_nick_upper','$password') ");
        return $this->db->insert_id();
    }
    

}


?>

(4)访问: http://127.0.0.1/HDwiki/index.php?user-register 即可看到效果

注意事项[ ]

在control中获得页面提交的参数共有两种方法:

1、$this->get[2]; //获取get方式的参数,按照数字序号

2、$this->post['username']; //获取post的参数,按照表单名字

相关调用代码[ ]

1、获取ip $this->ip;

2、获取设置参数 $this->setting['site_name'];

3、获得当前用户 $this->user;

4、获得语言文件变量 $this->view->lang['adduserSuccess'];

5、页面上需要显示时间的时候,请注意,需要调用date方法

while($user=$this->db->fetch_array($query)){
            $user['lasttime']=$this->date($user['lasttime']);
            $user['regtime']=$this->date($user['regtime']);
            $userlist[]=$user;
        }

参考来源[ ]

http://kaiyuan.hudong.com/

HDWIKI使用手册导航

HDWIKI安装

安装教程

HDWiki使用

前台使用说明 | 用户管理 | 模板管理 | 插件管理 | 数据库管理 | 站内统计 | Map功能 | 基本设置 | 站点设置 | 扩展设置 | 内容设置 | 友情链接及广告管理 | 分类管理 | 词条管理 | 数据调用 | 其他内容管理 | 礼品商店 | 图片及木马扫描 | Apache伪静态 | IIS伪静态 | Nginx伪静态 | 通用样式解读 | 样式使用规则 | 数据库结构说明 | 模板说明 | 函数类参考 |软件包结构 | HDWiki运行机制和原理 |编码规范 |MVC中的控制器 | 框架简介 | 高级应用 | MVC中的视图 | MVC中的模型 | HDWiki与PHPCMS整合 | HDWiki与PHPWind整合 | HDWiki与DEDECMS整合 | HDWiki与UCenter整合 | 可视化编辑使用说明 | 模块区版块制作教程 | 模版共享

HDWiki插件

插件开发指南 | 许愿墙插件开发实例 | 模版与标签 | 宣传中心 | 友情链接申请 | 数据调用 | 互动摸摸