thinkphp对于ajax的调用及session的用法
一、ajax对于php是非常实用的一种方法,那么在thinkphp框架中ajax是不是一样好用呢?答案是肯定的。thinkphp针对ajax也有自己独特的用法:
首先我们在自己建的Admin文件下建立一个Index文件夹,然后在这个文件夹里边建一个ceshi.html文件,要用ajax就要用到jquery文件,所以我们要将jquery文件复制到Public文件夹下进行调用:
<!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> <script src="__ROOT__/Public/js/jquery-3.2.0.min.js">//调用jquery</script> </head> <body> <select id ="leibie"> </select> </body> <script> $.ajax({ url:"__CONTROLLER__/shuju", dataType:"JSON", success:function(data){ var str = ""; for( var k in data){ str = str+"<option value='"+data[k].lbid+"'>"+data[k].lbname+"</option>"; } $("#leibie").html(str); } }) </script> </html>
然后我们在Controller文件夹内新建一个IndexController.class.php的文件,在里边添加ceshi方法和shuju方法:
<?php namespace Admin\Controller; use Think\Controller; class IndexController extends Controller{ public function index(){ echo "欢迎使用Thinkphp"; } public function ceshi(){ $this->show(); } public function shuju(){ $n = M("leibie");//创建leibie表模型 $arr = $n->select(); $this->ajaxReturn($arr);//调该方法返回数据 } }
看一下结果:
这就是thinkphp中ajax的用法,非常方便实用。
二、session在thinkphp中的使用,用于验证用户是否登录:
在thinkphp中session不用手动开启,默认就是开启的:
首先在Cotroller文件夹内建一个LoginController.class.php
<?php namespace Home\Controller; use Think\Controller; class LoginController extends Controller{ public function login(){ if(empty($_POST)){ $this->show(); } else{ $uid = $_POST["uid"]; $pwd = $_POST["pwd"]; $n=M("users"); $arr = $n->find($uid); if($arr["pwd"]==$pwd && !empty($pwd)){//验证密码 session("uid","$uid"); } else{ echo "登录失败"; } } } }
然后在View文件夹下新建一个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> <script src="__ROOT__/Public/js/jquery-3.2.0.min.js"></script> </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>
然后最关键的是需要建立一个父类BaseController.class.php:
<?php namespace Home\Controller; use Think\Controller; class BaseController extends Controller{ public function __construct(){ //调用父类构造 parent::__construct(); //写session控制 if(session("?uid")){ }else{ $this->redirect("Login/login"); } } }
然后我们其他所有的控制器都继承新建的这个BaseController就可以了:
<?php namespace Admin\Controller; use Home\Controller\BaseController; class IndexController extends BaseController{ public function index(){ echo "欢迎使用Thinkphp"; } public function ceshi(){ $this->show(); } public function shuju(){ $n = M("leibie");//创建leibie表模型 $arr = $n->select(); $this->ajaxReturn($arr);//调该方法返回数据,如果是字符串,后边加eval } }