添加表单数据
下面来看一下将表单数据提交并写入数据表的例子。
创建表单
进入模板目录 TPLdefaultIndex(如果 Index 文件夹不存在,则创建一个)。Index 文件夹对应存放 Index 模块(IndexAction.class.php)的模板文件,不能随意命名。
在 Index 文件夹内创建一个名为 form.html 的文件,文件采用 UTF-8 编码,内容如下:
表单数据测试用户名:
密 码:
电子邮箱:
__URL__ 是 ThinkPHP 模板中的特殊字符串,在输出模板之前系统会自动将其替换成当前模块的 URL 地址。此处是替换成 Myapp/index.php/Index ,具体参见《ThinkPHP 模板特殊字符串替换》,所以该例子中 action="__URL__/insert2" 表示向当前模块的 insert2 操作提交数据。
提示:由于只是简单的输出 form.html 页面而没有其他逻辑操作,因此不需要在 Index 模块内创建对应的操作。
访问该页面:http://127.0.0.1/html/Myapp/index.php/Index/form,可以看到刚才创建的表单。
创建写入数据操作
在 IndexAction 控制器(Lib/Action/IndexAction.class.php)里,添加 insert2() 操作:
public function insert2(){
header("Content-Type:text/html; charset=utf-8");
$Dao = M("User");
// 构建写入的数据数组
$data["username"] = $_POST["username"];
$data["password"] = md5($_POST["password"];);
$data["email"] = $_POST["email"];
$data["regdate"] = time();
// 写入数据
if($lastInsId = $Dao->add($data)){
echo "插入数据 id 为:$lastInsId";
} else {
$this->error('数据写入错误!');
}
}
在表单页面填写数据并提交,ThinkPHP 中同样是通过 $_POST/$_GET 变量来接受表单发送的数据。
提示
对于提交的表单数据,ThinkPHP 在数据写入数据表之前,做了 addslashes() 操作,对特殊字符进行转义。如果不想将特殊字符做转义,可以在写入数据库之前 addslashes()。
参考阅读