项目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字节