资讯专栏INFORMATION COLUMN

用codeigniter开发一个简单的博客

haitiancoder / 1699人阅读

摘要:比如控制器和模型都写完了,那就可以叫出前台了等等,这个是什么玩意儿,这个就是提交不符合规则页面跳转之后,自动会把之前的值填进来。注册完成之后,我们就要用登陆了这里要判断是否已经登录其实如果这位客官看到这里,应该能拓展着写完剩下的开发。

话说甲大湿手持一把桃木剑,不慌不忙从袋子里抽出一张符文,只见上面写着CodeIgniter几个大字。

众乡亲不解,甲大湿摇摇头,拿过旁边大妈手里的拖把,去旁边的河岸里沾了点水,在地面上洋洋洒洒地写上 今天宜写博客 几个大字。众乡亲恍然大悟,纷纷拍掌欢呼。

咳咳咳,进入今天的正题,闲着无聊,看看机油用ci写的博客,心里痒痒,于是看着ci文档,小菜鸟按照自己理解,写了个十分简单的博客系统,就只有登录注册,curd文章的功能。

来次狗!

首先我们要注册,注册怎么写呢,不就是一个表单提交,然后插入数据库的菊花嘛(咦),等等,注册?我们是不是需要一个user的model呢?

// modelsuser_model.php
load->database();
  }
  // user里我们需要创建用户,就4行数据
  public function create_user() {

    $data = array(
      "username" => $this->input->post("username"), 
      "nickname" => $this->input->post("nickname"),
      "password" => $this->input->post("password"),
      "email" => $this->input->post("email")
    );

    return $this->db->insert("users",$data);
  }
}

// controllersuser.php
class User extends CI_Controller {

  public function __construct() {
    parent::__construct();
  }

  public function register() {
    $this->load->helper("form");
    $this->load->library("form_validation");

    // 这里做表单验证,就是上面的form_validation提供的一些函数,大家可以通过函数名看出这些函数是做什么的,等等,第一个参数是表单的name,第二个是等下提示错误信息用的昵称,第三个就是处理方式
    $this->form_validation->set_rules("username","Username","trim|required|xss_clean|is_unique[users.username]");
    $this->form_validation->set_rules("password","Password","trim|required|mathes[passconf]|md5");
    $this->form_validation->set_rules("passconf","Password Confirmation","required");
    $this->form_validation->set_rules("email","Email","required|is_unique[users.email]");

    if($this->form_validation->run() === FALSE) {
      $data["title"] = "Register";

      $this->load->view("templates/header",$data);
      $this->load->view("user/register");
      $this->load->view("templates/footer");
    } else {
    // 如果通过验证,那么创建用户
      $this->user_model->create_user();
      redirect("/login");
    }
  }
}
```

到这里,我们就能实现一个简单的注册功能,等等,什么?你说你报错? 对了,忘记说了,这位客官有没有发现,config文件夹有一个叫autoload的东西,就是用来自动给我们跑腿的。比如

```php
$autoload["libraries"] = array("database","session");
$autoload["helper"] = array("url");
$autoload["model"] = array("user_model");
```
控制器和模型都写完了,那就可以叫出前台mm了
```php




  
  <?php echo $title ?>



© 2014 By fakefish

Register

">
">
">
">
">
Login

等等,这个set_value()是什么玩意儿,这个就是提交不符合规则页面跳转之后,自动会把之前的值填进来。

注册完成之后,我们就要用登陆了

// controllersuser.php
  public function login() {
    $this->load->helper("form");
    $this->load->helper("url");
    $this->load->library("form_validation");

    if($this->session->userdata("logged_in")){
      redirect("/");
    }
    // 这里要判断是否已经登录

    $this->form_validation->set_rules("username","Username","trim|required|xss_clean");
    $this->form_validation->set_rules("password","Password","md5");

    $data["title"] = "Login";
    if($this->form_validation->run() === FALSE) {
      $this->load->view("templates/header",$data);
      $this->load->view("user/login");
      $this->load->view("templates/footer");
    } else {
      $username = $this->input->post("username");
      $password = $this->input->post("password");
      $result = $this->user_model->get_user($username);

      if($result && $password == $result->password) {
        $this->load->view("user/login-success");

        $this->session->set_userdata("uid",$result->id);
        $this->session->set_userdata("username",$result->username);
        $this->session->set_userdata("nickname",$result->nickname);
        $this->session->set_userdata("email",$result->email);
        $this->session->set_userdata("logged_in",TRUE);

        redirect("/");
      } else {
        $this->load->view("templates/header",$data);
        $this->load->view("user/login");
        $this->load->view("templates/footer");
      }
    }
  }

其实如果这位客官看到这里,应该能拓展着写完剩下的开发。

代码不就细给了,讲一些自己碰到的一些东西。

1.数据库连接查询

  public function get_list_post($p = FALSE) {
    $this->db->select("*");
    $this->db->from("posts");
    $this->db->join("users","users.id = posts.uid");
    $this->db->order_by("pid desc");

    if($p === FALSE) {
      $this->db->limit(5);
    } else {
      $this->db->limit($p*5+5,$p*5);
    }

    $query = $this->db->get();
    return $query->result();
  }

这里,由于我设计的posts里有一列是uid对应users里的id,每次查文章要把两个并起来查,然后被这个limit()坑了,上面写的是对的,但是我一开始写的是反的,我感觉反着写才更符合人的想法啊。

整个博客的源码我放在github上了,在线demo

其实作为一个渣前端,没怎么学过服务器方面的知识,比如默认的路由是只能是/index.php/write,怎么办呢,本地是apache,就修改.htaccess文件咯

RewriteEngine on   
RewriteCond $1 !^(index.php|images|robots.txt)   
RewriteRule ^(.*)$ /ciblog/index.php/$1 [L]

这样就能在路径上自动隐藏index.php啦~

谢谢观看我这个渣文采。

写个破文章还没配图!

其实写完发现已经16号了,看了一下程序员黄历,今天不宜写博客!!就不想写了,突然断尾抱歉各位看客

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/20676.html

相关文章

  • 【docker】 bind-mount或者COPY时需要注意 户、文件权限 问题

    摘要:问题产生原因最近在使用的时候经常遇到权限问题。如果权限不够,就会出现问题。从上图可以看到,主进程的拥有者是,可以读写任何文件,权限肯定没问题。要解决这个问题,其实就是让用户有权读写以及其中的文件。 问题产生原因 最近在使用docker的时候经常遇到权限问题。通过这个stackoverflow回答,我明白了问题出现的主要原因:Docker在进行bind mount的时候,或者在进行COP...

    muddyway 评论0 收藏0
  • CodeIgniter 4 建议路线图

    摘要:核心变化从第一版发布以来,社区发生了巨大变化。这意味着系统必须全部重写。暂时不会为一个即将停止支持的版本发布新版本。路由路由功能将被更新。改进的日志系统日志系统将被改进,但具体细节尚未确定。第一阶段第一阶段将侧重于抓住框架最重要的部分。 我们综合考虑了社区的愿望和意见后,也对什么样的未来对 CI 是最合适的做了一些思考,然后,CI 理事会对框架的未来做出了一些决策。预告一下,未来将会有...

    sean 评论0 收藏0
  • 腾讯云Codeigniter小记

    摘要:前段时间为了抓取网络文本数据,申请了腾讯云学生机,用的框架弄了一段时间。这个用户既是不可登录的操作系统用户,也是数据库用户。设置数据库用户密码为了能够让和数据库相连接,需要设置数据库用户密码。 打读研之后,更加关注算法的学习,Web开发这一块便落下了,平时也通过微信公众号关注了些,常常感慨,技术的更迭真是日新月异。 前段时间为了抓取网络文本数据,申请了腾讯云学生机,用Python的Sc...

    Ocean 评论0 收藏0
  • 腾讯云Codeigniter小记

    摘要:前段时间为了抓取网络文本数据,申请了腾讯云学生机,用的框架弄了一段时间。这个用户既是不可登录的操作系统用户,也是数据库用户。设置数据库用户密码为了能够让和数据库相连接,需要设置数据库用户密码。 打读研之后,更加关注算法的学习,Web开发这一块便落下了,平时也通过微信公众号关注了些,常常感慨,技术的更迭真是日新月异。 前段时间为了抓取网络文本数据,申请了腾讯云学生机,用Python的Sc...

    alphahans 评论0 收藏0
  • Codeigniter 4.0-dev 版源码学习笔记之一——前言以及 CI 4 预览

    摘要:版权声明可转载,但不论任何媒体都需要在转载前与本人沟通,并在转载时注明出处。的各个核心模块以模块名为目录名分别存储在这个目录下。下一篇文章会涉及到和。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 写在前面: 为什么选择开发过程中的 CI 4 作为源码解读版本:(1)首先我选 CI 是因为它之前的稳定版都是相对比较轻量小巧的,而且可以认为是简单的。(2)为什么没有选...

    MSchumi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<