• 第四天 ThinkPHP手把手高速拼接站点(四)


               6月6日,晴天。“熟梅天气豆生蛾。一见榴花感慨多。

    芒种积阴凝雨润,菖蒲修剪莫蹉跎。

              、后台编写-续-1

                   1、改动admin/Tpl/Login/index.html

                    自己改动logo,用户名、密码都改为中文。文本框分别加入name="username"。name="password"。

                     重点改动<form action="index.html">改为<form action="__URL__/login" method="post">

                   解释: __URL__是当前模块的URL地址

                                    在PHP里:__URL__ 当前模块的URL地址
                          在模版里:__URL__ 会替换成当前模块的URL地址(不含域名)

                                      action="__URL__/login"  是提交到当前模块的login方法下


                 2、编写Login模块的login方法             

    <?

    php class LoginAction extends Action { function index() { // 配置页面显示内容 $this->assign ( 'title', '后台管理系统' ); $this->display (); } //用户登录页面 function login(){ header("Content-Type:text/html; charset=utf-8"); //首先检查验证码是否正确(验证码存在Session中) if($_SESSION['verify'] != md5($_POST['verify']) ){ $this->error('验证码不对'); } $user=M('User');//參数的User必须首字母大写,否则自己主动验证功能失效!

    $username=$_POST['username']; $password=md5($_POST['password']); if(!$this->checklen($username)){ $this->error('用户名长度必须在5~15个字符之间'); } //查找输入的用户名是否存在 if($user->where("username ='$username' AND password = '$password'")->find()){ session(username,$username); $url=U('/Index/index/username/'.$username); redirect($url,0, '跳转中...'); }else{ $this->error('用户名或密码错误'); } } function checklen($data){ if(strlen($data)>15 || strlen($data)<5){ return false; } return true; } }

               当中,$user = M('User');表示实例化User模型,事实上等效于:$User = new Model('User');表示操作think_user表。

    在未定义不论什么模型的时候,我们能够使用M方法实例化一个模型类来进行操作。这样的方法最简单高效,由于不须要定义不论什么的模型类,所以支持跨项目调用。缺点也是由于没有自己定义的模型类,因此无法写入相关的业务逻辑,仅仅能完毕主要的CURD操作。

              M方法的调用格式:M('[基础模型名:]模型名','数据表前缀','数据库连接信息')

           M方法有三个參数。第一个參数是模型名称(能够包含基础模型类和数据库),第二个參数用于设置数据表的前缀(留空则取当前项目配置的表前缀),第三个參数用于设置当前使用的数据库连接信息(留空则取当前项目配置的数据库连接信息)

           第二个參数留空默认表前缀think_ 第三个參数留空,则须要配置adminConfconfig.php

    <?

    php $arr1=array( //'配置项'=>'配置值' 'URL_MODEL' =>1,//path-info 模式 ); $arr2=include './config.inc.php'; return array_merge($arr1,$arr2); ?

    >

          config.inc.php配置

    <?

    php return array( 'DB_TYPE' => 'mysql', 'DB_HOST' => 'localhost', 'DB_NAME' => 'tp',//数据库名 'DB_USER' => 'root', //username 'DB_PWD' => 'root',//password 'DB_PORT' => '3306', 'DB_PREFIX' => 'think_',//数据库表名前缀 ); ?>

                M('User');表示实例化User模型。模型名字是User,该模型就是数据库表think_user
    drop table if exists think_user;
    
    /*==============================================================*/
    /* Table: think_user                                            */
    /*==============================================================*/
    create table think_user
    (
       id                   int(11) not null auto_increment,
       username             char(15) not null,
       password             char(40) not null,
       createtime           int(11) not null,
       ip                   char(16) not null,
       primary key (id)
    );
    

           代码释义:

          ThinkPHP内置了很灵活的查询方法,能够高速的进行数据查询操作,查询条件能够用于CURD等不论什么操作,作为where方法的參数传入就可以: if($user->where("username ='$username' AND password = '$password'")->find())

    最后生成的SQL语句是SELECT * FROM think_user WHERE `username`='admin' and  `password`='admin'

               Session赋值比較简单。直接使用: session(username,$username);相当于:$_SESSION['username'] =$username;

            $url=U('/Index/index/username/'.$username);中username是传递的參数名,$username是參数值。

            redirect($url,0, '跳转中...');Action类的redirect方法能够实现页面的重定向功能。使用方法是停留0秒后跳转到Index模块的index操作,而且显示页面跳转中字样。重定向后会改变当前的URL地址。

             3 改动admin/Lib/Action/IndexAction.class.php,例如以下:

    <?php
    // 本类由系统自己主动生成,仅供測试用途
    class IndexAction extends Action {
    	public function index() {
    		if (session ( '?

    username' )) { $this->display(); } else { $this->error ( '亲,您好,请先登录!', U ( '/Login/index/' ) ); } } }

             代码释义:

            this->assign('name',$value); //在 Action 类里面使用 assign方法对模板变量赋值,不管何种变量类型都统一使用 assign 赋值。

            $this->display() // 输出默认模版文件

            模板默认输出是指输出指令 display 方法中不带不论什么參数,系统默认输出相应模板,即admin/Tpl/Index/index.html。

              4、 用下载的后端模板里面文件的index.html放在adminTplIndexindex.html里面,改动index.html文件中的相关资源路径。如:<link rel="stylesheet" href="__PUBLIC__/Css/admin/reset.css" type="text/css" media="screen" />等。还有publicCssadminstyle.css里面的如:background: #f0f0f0 url('../../Images/admin/bg-body.gif')

            5、訪问:http://localhost/MyFirstThinkPHP_1/admin.php  ,呵呵大笑。出来了!须要在建好的数据库表think_user中填写username为admin,password为admin(21232f297a57a5a743894a0e4a801fc3)。




  • 相关阅读:
    BZOJ 2738 矩阵乘法(整体二分+二维树状数组)
    BZOJ 1430 小猴打架(prufer编码)
    BZOJ 2818 Gcd(莫比乌斯反演)
    BZOJ 4403 序列统计(Lucas)
    BZOJ 3083 遥远的国度(树链剖分+线段树)
    BZOJ 2049 [Sdoi2008]Cave 洞穴勘测(动态树)
    BZOJ 3282 Tree(动态树)
    BZOJ 3239 Discrete Logging(BSGS)
    BZOJ 2683 简单题(CDQ分治+树状数组)
    BZOJ 4327 JSOI2012 玄武密码(后缀自动机)
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6752663.html
Copyright © 2020-2023  润新知