thinkphp5.1学习笔记(3)

thinkphp5.1命令行操作

一、数据库迁移工具,先通过 composer 安装迁移工具

        

 
 
  1. composer require topthink/think-migration

创建迁移类,首字母必须为大写

 
 
  1. php think migrate:create Users

可以看到目录下有新文件 .\database\migrations\20161117144043_users.php

使用实例

 
 
  1. <?php
  2. use Phinx\Migration\AbstractMigration;
  3. class Users extends AbstractMigration
  4. {
  5. /**
  6. * Change Method.
  7. */
  8. public function change()
  9. {
  10. // create the table
  11. $table = $this->table('users',array('engine'=>'MyISAM'));
  12. $table->addColumn('username', 'string',array('limit' => 15,'default'=>'','comment'=>'用户名,登陆使用'))
  13. ->addColumn('password', 'string',array('limit' => 32,'default'=>md5('123456'),'comment'=>'用户密码'))
  14. ->addColumn('login_status', 'boolean',array('limit' => 1,'default'=>0,'comment'=>'登陆状态'))
  15. ->addColumn('login_code', 'string',array('limit' => 32,'default'=>0,'comment'=>'排他性登陆标识'))
  16. ->addColumn('last_login_ip', 'integer',array('limit' => 11,'default'=>0,'comment'=>'最后登录IP'))
  17. ->addColumn('last_login_time', 'datetime',array('default'=>0,'comment'=>'最后登录时间'))
  18. ->addColumn('is_delete', 'boolean',array('limit' => 1,'default'=>0,'comment'=>'删除状态,1已删除'))
  19. ->addIndex(array('username'), array('unique' => true))
  20. ->create();
  21. }
  22. /**
  23. * Migrate Up.
  24. */
  25. public function up()
  26. {
  27. }
  28. /**
  29. * Migrate Down.
  30. */
  31. public function down()
  32. {
  33. }
  34. }

这一点和 laravel 框架使用有很大相同之处,可以说thinkphp5.1 借鉴的很多 laravel 的思想


二、安全问题

    1、上传

    网站的上传功能也是一个非常容易被攻击的入口,所以对上传功能的安全检查是尤其必要的。

    系统的think\File提供了文件上传的安全支持,包括对文件后缀、文件类型、文件大小以及上传图片文件的合法性检查,确保你已经在上传操作中启用了这些合法性检查。

    2、安全建议

  • 对所有公共的操作方法做必要的安全检查,防止用户通过URL直接调用;
  • 不要缓存需要用户认证的页面;
  • 对用户的上传文件,做必要的安全检查,例如上传路径和非法格式;
  • 对于项目进行充分的测试,不要生成业务逻辑的安全隐患(这可能是最大的安全问题);
  • 最后一点,做好服务器的安全防护,安全问题的关键其实是找到你的最薄弱环节;

    3、优化建议:

架构及开发过程优化建议:

  • 路由尽量使用域名路由或者路由分组;
  • 在路由中进行验证和权限判断;
  • 合理规划数据表字段类型及索引;
  • 结合业务逻辑使用数据缓存,减少数据库压力;

在应用完成部署之后,建议对应用进行相关优化,包括:

  • 如果开发过程中开启了调试模式的话,关闭调试模式(参考调试模式);
  • 通过命令行生成类库映射文件;
  • 通过命令行生成配置缓存文件;
  • 生成数据表字段缓存文件;

猜你喜欢

转载自blog.csdn.net/json159/article/details/80830356