第四天 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_ 第三个参数留空,则需要配置admin\Conf\config.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',	//用户名	
	'DB_PWD'			=>	'root',//密码
	'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放在admin\Tpl\Index\index.html里面,修改index.html文件里的相关资源路径。如:<link rel="stylesheet" href="__PUBLIC__/Css/admin/reset.css" type="text/css" media="screen" />等。还有public\Css\admin\style.css里面的如:background: #f0f0f0 url('../../Images/admin/bg-body.gif')

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值