使用ThinkPHP之前需要一个运行PHP程序的环境,这里使用的是PHPStudy集成软件来实现。运行程序前需要把PHPStudy中的Apache和mysql打开,如下图红框显示所示:
如果phpStudy中的mysql启动不了,原因是本地的数据库和phpStudy自带的数据库相互冲突,所以解决办法如下: 先尝试改下端口,将3306端口改成未被使用过的 如下图所示:
先下载ThinkPHP,下载官网: https://www.thinkphp.cn/down/framework.html
下图里面的thinkphp 随便下一个
下载完成之后,将文件放在phpStudy中的路径下,如下图放置:
thinkPHP目录结构
(见thinkphp手册--基础--目录结构)
万事俱备,首先先调试下thinkphp能不能运行成功,访问地址别错了,地址格式如下:
localhost+Apache端口号+thinkphp根目录+public(上图的目录结构中也说了,public是web部署目录,必须要先经过public才能够访问)+入口(index.php 这里的入口thinkPHP实际上是直接链接到application=>index=>controller下面的index.php,必须访问index.php这个文件入口,才能继续下面操作。)
我的访问地址:http://localhost:80/thinkphp_5.0_full/public/index.php 显示为如下页面就证明成功了
创建三层模型
首先得了解thinkPHP中的MVC三层架构:
thinkPHP默认只有一个controller的目录,所以model和view两层需要自己创建。这个使用的是cmd命令自动生成php文件代码。创建命令如下图所示:
首先得将位置定位到thinkPHP的根目录下,我的根目录位置如下所示:
在此之前,得先将php的环境变量添加到系统变量中,不然在电脑中敲命令会无法执行。如下:
接下来使用cmd创建命令创建三层:
创建步骤下:
1.创建controller层中的login.php命令:
php think make:controller index/Login
2.创建model层中的User命令:
php think make:model index/User
3.手动创建视图 view文件夹
4.其次在view文件夹中创建login文件夹
5.最后在login文件夹中创建login.html
创建三层模型结构成功如下示例:
到这里文件创建就结束了。
编写登录页面
打开controller层下的login.php,可以看到使用cmd命令创建的文件会自动生成结构。
先测试页面能不能正常运行,首先在login.php中随便一个方法输入测试信息,如下图所示,随便选一个方法进行测试。
这里的访问路径别错了,是之前说过的入口(index.php)+index(这个文件夹下的三层)+controller层中的Login.php页面+具体的方法。测试地址如下
测试访问页面没有问题,具体步骤如下:
1、更改application文件夹下的database.php数据库信息
2、编写view中的login.html(主页面显示,controller层先通过方法链接到view中的html中)
3、在model层User.php代码中设置完整的数据库表名称。
更改application文件夹下的database.php数据库信息
本地数据库结构:
编写view中的login.html(主页面显示,controller层先通过方法链接到view中的html中)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form method="POST" action="{:url('index/login/yanzheng')}" >
<label>用户名:</label>
<input type="text" name="user" placeholder="请输入用户名"> <br>
<label>密码:</label>
<input type="password" name="pwd" placeholder="请输入密码"><br>
<button type="sumbit">登录</button>
</form>
</body>
</html>
在model层User.php代码中设置完整的数据库表名称
login.html页面如下:
页面简陋了点哈~~
登录提交数据库验证的实现:
<?php
namespace app\index\controller;
use think\Controller;
use think\Request;
use app\index\model\User as UserGG;
class Login extends Controller
{
public function login()
{
$htmls=$this->fetch(); //返回login触发器的默认html文件,即login.html
return $htmls;
}
public function yanzheng()
{
$pancheng=input('post.');
$username=$pancheng['user']; //获取login.html中的表单提交上来的name=user的值
$password=$pancheng['pwd']; //获取login.html中的表单提交上来的name=pwd的值
echo "登录名为:{$username} 密码:{$password}".'<br>';
$selectOne=array('username'=>$username,'password'=>$password); //把上面获取的值放入到un数组中
$result=\app\index\model\User::get($selectOne);
if (is_null($result)) //如果un数组为空的时候,即查询失败,没有这个值,即账号密码错误
{
return '登录失败!';
}
else //反之,即查询成功,账号密码正确
{
return '登录成功!';
}
}
/**
* 显示资源列表
*
* @return \think\Response
*/
public function index()
{
// return view('login');
}
/**
* 显示创建资源表单页.
*
* @return \think\Response
*/
public function create()
{
echo "大大";
}
/**
* 保存新建的资源
*
* @param \think\Request $request
* @return \think\Response
*/
public function save(Request $request)
{
echo "小小";
}
/**
* 显示指定的资源
*
* @param int $id
* @return \think\Response
*/
public function read($id)
{
//
}
/**
* 显示编辑资源表单页.
*
* @param int $id
* @return \think\Response
*/
public function edit($id)
{
//
}
/**
* 保存更新的资源
*
* @param \think\Request $request
* @param int $id
* @return \think\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* 删除指定资源
*
* @param int $id
* @return \think\Response
*/
public function delete($id)
{
//
}
}
验证登录是否成功:
为了快速测试没有美化页面,这里我数据库中user表的数据有:
成功页面如下:
失败页面如下:
至此登录功能就全部实现了,只是为了测试,页面没有进行美化,请多多指教。