一、关于JS和CSS路径问题

1.找路径是从入口文件index.php来找的,而不是从文件本身所在位置来找,

 因为我们访问时是访问的入口文件

2.在存放JS和CSS的时候可以放到public文件夹下

3.可以使用标签引入:

3.1 import标签

传统方式的导入外部JS和CSS文件的方法是直接在模板文件使用:

系统提供了专门的标签来简化上面的导入:

3.2 load标签

load标签,通过文件方式导入当前项目的公共JS或者CSS

3.3js和css标签

系统还提供了两个标签别名js和css 用法和load一致,例如:

二、第三方类入

有两块地方可以放第三方类
(1)模块下面
(2)Library下面新建文件夹或者旧的文件夹里面
放进去之后,需要添加命名空间,命名空间从根命名空间写起
注意类文件的命名规则和类名的规则

以分页为例:

原来在分页时使用limit标签:

现在也可以引入分页类:

Library下面新建文件夹或者旧的文件夹里面

做法1:在ThinkPHP\Library\Think文件夹下新建fenye文件夹并将之前的page.class.php复制到fenye里

page.class.php的命名空间:namespace Think\fenye;(其余不发生变化)

控制器里面写入:use Think\fenye\Page;

ZhuCeController.class.php

 1 namespace Home\Controller;
 2 use Think\Controller;
 3 use Think\fenye\Page;
 4 class ZhuCeController extends Controller
 5 {
 6
 7         //第三方类引入
 8     function FenYe()
 9     {
10
11         $model=M("nation");
12         $total=$model->count();
13         $page=new Page($total,1);
14
15         $sql="select * from nation ".$page->limit;
16         $attr=$model->query($sql);
17
18         $xinxi=$page->fpage();
19         //var_dump($attr);
20         $this->assign("xinxi",$xinxi);
21         $this->assign("nation",$attr);
22
23         $this->display();
24     }
25 }

View Code

View/ZhuCe/FenYe.html:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>无标题文档</title>
 6 </head>
 7
 8 <body>
 9 <table border="1" width="40%">
10 <tr>
11 <td>代号</td>
12 <td>名称</td>
13 </tr>
14 <foreach name="nation" item="v">
15 <tr>
16 <td><{$v.code}></td>
17 <td><{$v.name}></td>
18 </tr>
19 </foreach>
20 </table>
21 <div><{$xinxi}></div>
22 </body>
23 </html>

View Code

运行结果:

做法2.在Home模块下的做法

在Home下新建文件夹fenye然后引入Page.class.php,其余不发生改变,效果是一样的

分页类里面的命名空间发生改变:namespace Home\fenye

控制器里面的的命名空间改变:use Home\fenye\Page

运行结果不变:

做法3.不使用use Home\fenye\Page;

做法4:改变分页的部分条件,加入使用limit标签

1.修改Home里面的分页类

2.修改控制器中的写法

3.Ajax返回

(1)url要变为MVC模式,指向的不是具体页面,是操作方法

(2)在操作方法里面返回值的时候,使用ajaxReturn()方法返回,注意返回类型,返回类型要和第二个参数一致

ThinkPHP可以很好的支持AJAX请求,系统的\Think\Controller类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端。并且支持JSON、JSONP、XML和EVAL四种方式给客户端接受数据,并且支持配置其他方式的数据格式返回。

返回数据data可以支持字符串、数字和数组、对象,返回客户端的时候根据不同的返回格式进行编码后传输。如果是JSON/JSONP格式,会自动编码成JSON字符串,如果是XML方式,会自动编码成XML字符串,如果是EVAL方式的话,只会输出字符串data数据。

1)利用Ajax返回的动态验证

 1 //ajax验证用户名非空
 2     function Yhm()
 3     {
 4         $model=D("Text");
 5         $rules=array(
 6             array('uid','require','用户名不能为空'),
 7         );
 8         if(!$model->validate($rules)->create())
 9         {
10             $fh=$model->getError();
11             $this->ajaxReturn($fh,"eval");
12         }
13         else
14         {
15             $fh="OK";
16             $this->ajaxReturn($fh,"eval");
17
18         }
19
20     }
21     

View Code

2)Zhuce.html

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>表单验证</title>
 6 <script src="../../../../../jquery-1.11.2.min.js">
 7 </script>
 8 </head>
 9
10 <body>
11 <form action="__ACTION__" method="post">
12 <div>用户名:<input type="text" id="uid" name="uid" /><span id="ts"></span></div><br />
13 <div>密&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="text" name="pwd" /></div>
14 <div>确认密码:<input type="text" name="pwd1" /></div><br />
15 <div>年龄:<input type="text" name="age" /></div><br />
16 <div>邮箱:<input type="text" name="email" /></div><br />
17 <div>姓名:<input type="text" name="name" /></div><br />
18 <!--显示错误信息 -->
19 <div style=" width:200px; height:30px; border:#F00 solid 2px; line-height:30px; vertical-align:middle; text-align:center;"><{$error}></div><br />
20 <div><input type="submit" value="注册" /></div>
21 </form>
22 </body>
23 <script type="text/javascript">
24 $(document).ready(function(e) {
25     $("#uid").blur(function(){
26         var uid=$(this).val();
27         $.ajax({
28             url:"__CONTROLLER__/Yhm",
29             data:{uid:uid},//这里要传的参数名必须和表单里的name一致
30             type:"POST",
31             dataType:"TEXT",
32             success: function(data){
33                 $("#ts").html(data);
34                 }
35
36             });
37
38         })
39 });
40
41 </script>
42 </html>

View Code

显示效果:

            

4.Session和Cookie

SESSION支持:

系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成,该函数可以完成Session的设置、获取、删除和管理操作。

COOKIE支持:

登录:

登录方法1:存session值,判断是否有这个值在登录

LoginController.class.php

<?php
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller
{public function Login(){if(empty($_POST)){$this->display();    }    else{$model = D("users");        $uid = $_POST["uid"];$pwd = $_POST["pwd"];$attr = $model->field("Pwd")->find($uid);//echo $attr["pwd"];if($pwd == $attr["pwd"]){session("uid",$uid);$this->success("登录成功","Main");}else{$this->error("登录失败");    }}}public function Main(){//var_dump(session('?uid'));//有session时返回true//判断sessionif(!session('?uid')){$this->error("未登录","Login");    exit();}echo "主页面";    }
}

View Code

Login.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<h1>登录</h1>
<form action="__ACTION__" method="post">
<div>用户名:<input type="text" name="uid" /></div>
<div>密码:<input type="password" name="pwd" /></div>
<input type="submit" value="登录" /></form>
</body>
</html>

View Code

登录方法2:写一个父类来控制登录,未登录者直接跳到登录页面

父类:CheckController.class.php

<?php
namespace Home\Controller;
use Think\Controller;
class CheckController extends Controller
{//这个类是作为所有控制器的父类//控制登录function __construct(){parent::__construct();if(!session('?uid')){$this->error("未登录",U("Login/Login"));exit();}    }
}

View Code

LoginController.class.php:登录只管登录,不继承新的父类,登陆后的其他内容继承CheckController.class.php

写法不变,原来的function Main() 注释掉

比如说:

更改MainController.class.php里面的命名空间:

namespace Home\Controller;
use Home\Controller\CheckController;
class MainController extends CheckController

这是不论访问MainController下的哪个路径都只能到登录

5.防止用户绕过登录直接访问操作方法
做一个控制器的父类,在该父类里面写一个构造方法,构造方法里面判断session里面有没有值,如果没值。。。如果有值。。。

转载于:https://www.cnblogs.com/ds-3579/p/5602450.html

Thinkphp 零散知识点(caa/js路径,引入第三方类,ajax返回,session/cookie)相关推荐

  1. vue引入第三方html,vue.js如何引入第三方模块?

    vue.js如何引入第三方模块?下面本篇文章给大家介绍一下Vue中正确引入第三方模块的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. vue.js如何引入第三方模块? 方法一: ...

  2. vue项目js文件引入第三方库组件

    vue项目js文件引入第三方库组件 //首先按需引入 第三方库 import { MessageBox } from 'element-ui' 使用: MessageBox.alert(`<di ...

  3. php引入外部js,vue.js怎么引入外部js,vue引入第三方js库

    vue.js怎么引入外部js·怎么介绍外部js,在vue.js中引入外部js的方法如下:1.使用外部文件[config.js],代码为[函数格式XML(text){ return text }]:2. ...

  4. tp5引入第三方类 实现获取音频(.mp3)文件时长。

    一.你需要在核心之外扩展和使用第三方类库,并且该类库不是通过Composer安装使用,那么可以直接放入应用根目录下面的extend目录下面,该目录是官方建议的第三方扩展类库目录. 二.类的命名规范遵循 ...

  5. 【laravel】整合云片短信验证---引入第三方类的方式

    一.自定义了一个类 [比如在 App\Helpers中自定义一个类CloudPiece.php] <?php namespace App\Helpers;use Log; use Monolog ...

  6. thinkphp6 加载第三方类库_thinkphp中第三方类引入问题

    项目引入了第三方类库acp_service,引入是成功的,这个acp_service类中自己引入了 secureUtil.php类.secureUtil.php类引入了另外一个类并且示例化了引入的类, ...

  7. uni-app 项目引入第三方js插件,单个js文件引入成功,调用该插件方法

    通过"vue项目引入第三方js插件,单个js文件引入成功,使用该插件方法时报错(问题已解决)"成功移到UNI-APP上 方法一: 引用网址:https://www.cnblogs. ...

  8. Vue cli 引入第三方JS和CSS的常用方法

    如果要引入第三方JS或者css  最好是把文件放在statis文件夹下,此处是静态文件存放的位置 第一种方法: 直接在index.html中引入 js <script type="te ...

  9. vue-cli3项目通过vue如何引入第三方js包完成登陆功能

    注意:本次登陆,前后端分离:前端通过引入第三方的js包,调用js包里的初始化方法和提交方法完成登陆以及退出: 流程1.引入第三方包 1.1在index.html文件下引入 流程2.完成初始化 在组件的 ...

最新文章

  1. 简单介绍Lua中的变量与赋值方法
  2. Java中对象的深克隆和浅克隆
  3. CDN如何实现,关键技术是什么?
  4. 《springcloud超级入门》Spring Cloud和Dubbo的区别及各自的优缺点《三》
  5. 【原】vue-router中params和query的区别
  6. 牛逼!只需 3 步,Java 也能做图片识别!
  7. 二十、oracle pl/sql基础
  8. 基于WordNet的英文同义词、近义词相似度评估及代码实现
  9. linux的ib网卡驱动安装,linux安装IB网卡(mellanox)驱动
  10. 自适应滤波器(一)LMS自适应滤波器
  11. Node包管理使用全教程
  12. 勒索软件不可破解?谁在标题党
  13. 架构师必备!15个经典面试问题及回答思路
  14. 网站文章采集与伪原创技巧
  15. -atime、-ctime、mtime、-newer
  16. eclipse cdt + rse文件保存遇到的问题
  17. GitHub Top 45:新手入门 Python,值得推荐的优质资源!
  18. 红石外汇|每日汇评:澳元空头等待突破上升趋势线- 100日SMA线下方
  19. 谈RAM与ROM的区别与理解
  20. SpringBoot 之 PDF大文件分片加载(后端)

热门文章

  1. 【转】Linux世界驰骋——文件系统和设备管理
  2. harmonyos开发者邀请码,HarmonyOS 2.0鸿蒙第二期开发者Beta公测申请指南
  3. 公共类java连接数据库_JDBC 建立连接公共操作类(静态方式与单例方式)
  4. @scheduled cron动态修改_spring boot实现动态增删启停定时任务
  5. 想从事单片机工作,C语言要达到什么水平?
  6. 低学历学什么技术有前途可以月入过万?
  7. [NC15665]maze
  8. ICPC 2005 hangzhou Generator (UVA1358)KMP + 期望DP / 高斯消元
  9. 【树的直径】解题报告: luogu P3629 [APIO2010]巡逻(树的直径,位运算成对变换,思维)
  10. jsessionid和jwt_JWT与Session的比较