ThinkPHP 是一个流行的 PHP 开发框架,表单令牌(Form Token)是 ThinkPHP 中用于防止跨站请求伪造(CSRF)攻击的一种安全机制。表单令牌通常是一个随机生成的字符串,服务器在生成表单时会将这个令牌嵌入到表单中,用户在提交表单时,服务器会验证这个令牌是否匹配。
Token 类生成和验证令牌。以下是一个简单的示例,展示如何在 ThinkPHP 中使用表单令牌:
<?php
namespace app\index\controller;
use think\Controller;
use think\facade\Session;
class Index extends Controller
{
public function index()
{
// 生成表单令牌
$token = token();
Session::set('__token__', $token);
return view('index', ['token' => $token]);
}
public function submit()
{
// 验证表单令牌
if (!input('post.__token__') || input('post.__token__') !== Session::get('__token__')) {
return json(['code' => 0, 'msg' => '非法请求']);
}
// 处理表单提交逻辑
return json(['code' => 1, 'msg' => '提交成功']);
}
}在视图文件 index.html 中:
<!DOCTYPE html>
<html>
<head>
<title>表单示例</title>
</head>
<body>
<form action="/index/submit" method="post">
<input type="hidden" name="__token__" value="{{ token }}">
<input type="text" name="username" placeholder="用户名">
<input type="password" name="password" placeholder="密码">
<button type="submit">提交</button>
</form>
</body>
</html>通过以上示例和解释,你应该能够理解 ThinkPHP 表单令牌的作用及其应用场景。如果你在实际开发中遇到任何问题,可以参考官方文档或进行进一步的调试。