项目github:https://github.com/amenging/php-vue-todo
线上地址:TODO
预览图:
实现功能
- 登录注册
- 增删改
- 仅本地储存(localStorage)
- 导入导出
食用说明
不同步到云端功能
一般用于:
- 不想同步到云端数据库的清单
注:重要数据及时导出备份和删除
导入导出功能
一般用于:
- 未同步到云端的清单在不同平台上的迁移;
- 重要数据的备份(考虑到主机可能没法续费了..之类的)
注:导出到本地的清单再导入时默认不同步云端
为什么要做这个项目
做这个项目主要有两个原因,其一是要做的事太多需要整理一下,找了一些事件清单用起来总有点不爽,本来就是希望简洁一点随时记录,其二是因为学完了vue一直没有一个自己的项目,想练练手,所以决定自己倒腾一个。
后台为什么用php?当然是因为php是世界上最……其实是因为太穷了买不起服务器就买了个php主机_(:з」∠)_
总结
- 做项目的过程中,首先是复习了一下vue,组件这块还拆得不太好,感觉还是要做好项目的规划啊,目前还比较随心,很多东西就是做的时候才会去想
- 时间大部分都花在折腾后台和数据上了,首先并不会php,mysql也忘得差不多了,在做的过程中又重新学了一下,虽然用的都是一些基础的东西,不过对于这么一个小工具还是够啦
- 在做的过程中接触了mock.js和yapi,很好用的接口管理工具(/ω\)
记录一些用到的东西~
php
判断sql语句返回值是否为空
1
2$sql = mysqli_query($conn, $getList);
if (mysqli_num_rows($sql) > 0) {} // 统计查询返回的行数字符串和json的转换
1
2
3
4
5
6
7// json转字符串
echo( json_encode(array("name" => "abc", "age" => 12)) );
// '{"name":"abc","age":12}'
// 字符串转json
// 默认返回对象,设置第二个参数为true则返回数组
var_dump( json_decode('{"name":"abc","age":12}') );
// object(stdClass)#1 (2) { ["name"]=> string(3) "abc" ["age"]=> int(12) }文件操作
1
2
3
4
5
6
7
8// 打开文件
// 以写入模式打开filename.txt文件
// w为mode参数,表示写入方式打开,将文件指针指向文件头并将文件大小截为零,文件不存在则创建
$myfile = fopen('filename.txt', 'w') or die('打开文件失败');
// 写入文件
// 将SOMEDATA写入到filename.txt文件
fwrite('filename.txt', SOMEDATA);密码验证
1
2
3
4
5
6// 加密
$hash = password_hash(密码, PASSWORD_DEFAULT);
// 注意储存密码时字段长度要设置至少为60
// 验证
password_verify(密码, $hash);php输入流
1
2
3// 获取POST参数
// php5.6使用POST报错,提示用php://input
$data = file_get_contents("php://input");cookie
1
2
3
4// 设置cookie
setcookie(key, value);
// 取消cookie
setcookie("username", "", time() - 1);
mysql
执行多条插入语句
1
INSERT INTO table (column1, column2) VALUES (value1, value2), (value1 ,value2);
字段最大长度问题
// 我使用的mysql是5.5.53,最大大小为65535字节, 我的表结构为:
Field | Type | Null | Key | Default | Extra | ||
---|---|---|---|---|---|---|---|
items_id | int(11) | NO | PRI | NULL | auto_increment | ||
content | varchar(21840) | YES | NULL | ||||
status | int(2) | YES | NULL | ||||
list_id | int(11) | YES | NULL |
计算结果为(65535-4*3-2-1)/3 = 21480
其中:4为int
类型所占字节,2为占位标志,1为null标志位所占字节,字符类型为utf8,所以最后除以3。计算规则
请看这位大大的博客:http://www.cnblogs.com/gomysql/p/3615897.html
注:int类型后面的数字不代表字节长度,代表显示的位数,int占4字节