记录几个要点:

  • 用户使用firbug伪造表单字段,比如伪造表单id字段,如何防止,tp5中好像没有。
  • xss攻击:使用htmlspecialchars() 会把img、p、等等合法标签过滤掉,想要有选择性过滤标签,使用htmlpurifier软件包,搜索htmlpurifier下载解压,把library放到项目目录中。如果是框架,那么把相关代码放在公共文件中生成一个函数,方便随时调用。
    /**
    * htmlpurifier 过滤js脚本 // 有选择性的过滤XSS --》 说明:性能非常低-》尽量少用
    */
    function removeXss($data) {
    //引入路径 根据具体位置设置,其他不需要改动
    require_once '../HtmlPurifier/HTMLPurifier.auto.php';
    $_clean_xss_config = HTMLPurifier_Config::createDefault();
    $_clean_xss_config->set('Core.Encoding', 'UTF-8');
    // 设置保留的标签
    $_clean_xss_config->set('HTML.Allowed', 'div,b,strong,i,em,a[href|title],ul,ol,li,p[style],br,span[style],img[width|height|alt|src]');
    $_clean_xss_config->set('CSS.AllowedProperties', 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align');
    $_clean_xss_config->set('HTML.TargetBlank', TRUE);
    $_clean_xss_obj = new HTMLPurifier($_clean_xss_config);
    return $_clean_xss_obj->purify($data);
    }
  • 商品生成缩略图:商品列表页需要把,商品详情页需要把,放大镜需要把,等等。所以在添加商品图片时,数据表中要有几个字段存放不同尺寸的图片。
  • 项目中图片的优化:1. 图片相关配置写在配置文件中;2. 图片路径不要写死,写在配置文件中; 3. 上传图片和图片处理的代码封装成一个函数。
    //图片配置
    'image' => [
    'maxSize' => 1024*1024,
    'exts' => array('jpg', 'jpeg', 'png', 'gif'),
    'rootPath' => '../public/uploads/', //上传图片保存的路径,PHP使用的路径,它是硬盘上的路径,他的根目录是D:
    'viewPath' => '/public/uploads', //显示图片时的路径,浏览器使用的路径,根目录是网站的根目录
    ], //在配置文件中写上这段代码,类似这种
  • 模拟并发量:使用Apache自带的ab.exe软件测试,需要先打开cmd,把ab.exe路径复制进cmd下运行。
    C:\Users\fb>D:\wamp\www\wamp32bits\wamp\bin\apache\apache2.4.18\bin\ab.exe  -c 10 -n 10 localhost/homework111/11js/mail.php
    //这是cmd里的命令

    -c: 并发量       -c 10      10个并发量;      -n   每个客户端请求数;  -n  10   10个并发总共请求10次。  后面的是PHP脚本路径。PHP代码如下:

    $db = @mysqli_connect('localhost', 'root', '', 'stu');
    mysqli_set_charset($db, 'utf8');
    $sql = "SELECT id from miaosha"; // mysqli_query($db, 'LOCK TABLE miaosha WRITE'); //锁表
    $fp = fopen('form.html', 'r'); // 一定要在操作数据库表之前上锁
    flock($fp, LOCK_EX); //php lock
    $r = mysqli_query($db, $sql);
    // var_dump($r);
    if($r && mysqli_num_rows($r)){
    $re = [];
    while($row = mysqli_fetch_assoc($r)){
    $re[] = $row['id'];
    }
    }
    if($re[0] > 0){
    $re[0]--;
    // echo 666;
    mysqli_query($db, 'UPDATE miaosha set id='.$re[0]);
    }
    // mysqli_query($db, 'UNLOCK TABLES'); //mysql释放锁,可以不写,脚本自动释放
    flock($fp, LOCK_UN);
    fclose($fp);
    mysqli_close($db);

    并发下读取数据库,假设数据库有100件商品,甲乙两个人可能同时读到100,然后各买1件,修改数据库,这时修改后的数据库剩余99件,但实际应该剩余98件。这就是并发带来的问题。所以使用锁。

  • 用户在填写多个值的时候,使用逗号隔开,如果既有中文逗号,又有英文逗号,那么在分割字符串的时候肯定有问题,怎么办?-------------------------------》方法:在插入数据库之前把中文逗号转换为英文逗号,怎么做?---------》str_replace(',', ',', $str);函数将逗号转换。

tp5商城的更多相关文章

  1. 李忠益TP5商城项目笔记(待完成)

    商品种类的无限极分类 $data=db('goods_type')->field(['*','concat(path,",",id)'=>'paths'])->o ...

  2. tp5 商城商品模型删除

    1:控制器代码 public function delete($id) { //验证id是否正确 $id if (!intval($id)) { return getJsonData(10010, ' ...

  3. tp5 商城模型id详情接口

    1:创建模型 2:定义关联模型 <?php namespace app\common\model; use think\Model; use traits\model\SoftDelete; c ...

  4. TP5框架,开源小程序商城源码,前端+后台完整版

    CRMEB微信公众号商城小程序商城数据同步,带积分.优惠券.秒杀.砍价.分销等功能,更是一套方便二次开发的框架 开源地址:https://github.crmeb.net/u/crmeb 商城演示后台 ...

  5. TP5.0+小程序商城构建(1)

    1.导语 1.整体的思路与编程思想(大局观.AOP面向切面编程,10-20%) 2.具体的编程知识与技巧(TP5.小程序.数据库等80%) 2.课程内容与产品技术点 1.ThinkPHP5框架 1.编 ...

  6. 慕课网 微信小程序商城构建全栈应用 tp5【总结】

    1.异常处理: [代码越抽象,复用性越高] [封装性越好,适应代码变化的能力越强] [] <?php/** * Created by PhpStorm. * User: 14155 * Date ...

  7. Jimmychoo商城系统总结

    一.需求 1.游戏模块 ①在进入H5之前,首先有一个动态的探照灯的动效,然后由"淡出"效果到H5首页. ②在点击"开始游戏"之后会有一段动画演示游戏内容,然后滑 ...

  8. TP5视频教程课程内容

    <TP5 视频教程课程内容> 一.ThinkPHP5TP5 官网基础教程, 官网手册作为参考,讲解TP5的使用方法.理解TP的用途 二.TP5大型项目实战及底层源码分析用TP5 做大型电商 ...

  9. tp5 使用技巧(持续更新中...)

    tp5 使用技巧(持续更新中...) 1.自动写入时间 create_time和update_time 使用save方法才行,insert方法不生效,不知为何 2.过滤字段 allowfield和st ...

随机推荐

  1. Python3图片处理头像

    一. 简介: Python3图片处理头像右上角类似QQ,微信右上角未读信息效果,其实没有实质作用,只是简单练习. 1. 环境: python3.5 random模块:生成随机数 PIL模块:图像处理模 ...

  2. PTA(Basic Level)1057.数零壹

    给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0.多少 1.例如 ...

  3. Java基础(九)

    综合案例 此前我们已经练习了根据集合当中的字符串对象读写文件,而本综合案例主要练习根据集合当中的自定义对象来读写文件. 场景介绍 很多网络游戏当中都有组队模式,例如魔兽世界.DotA.英雄联盟(LOL ...

  4. gunicorn 介绍与性能分析

    阅读此文前建议先阅读 我的博客 gunicorn 是一个 python wsgi http server,只支持在 unix 系统上运行 安装 gunicorn 其实是 python 的一个包,安装方 ...

  5. 牛客 545C 出题人的数组 (贪心)

    出题人有两个数组A,B,请你把两个数组归并起来使得$cost=\sum i c_i$最小. 归并要求原数组的数的顺序在新数组中不改变. 贪心水题 对于一段序列$A_i,A_{i+1},...,A_r$ ...

  6. 类的函数成员之属性property

    属性命名采用Pascal命名方式,每个单词的首字母大写.访问方式与访问类的公共字段类似. /// <summary> /// 字段 /// </summary> private ...

  7. 【原创】运维基础之Nginx(3)location和rewrite

    nginx location =:精确匹配(必须全部相等) ~:大小写敏感,正则匹配 ~*:忽略大小写,正则匹配 ^~:只需匹配uri部分,精确匹配 @:内部服务跳转,精确匹配 优先级: Exact ...

  8. Appium Android 获取包名appPackage和appActivity的几种方法

    情况1: 安装包未安装到手机 准备前提条件: 1 Android SDK管理工具目录 2 PC端有apk包 使用方法: 1 打开终端,当前路径移动到sdk管理工具目录tools或build-tools ...

  9. weex 通用样式以及需要注意的问题

    一.说明 weex 对于 css 样式的支持是非常有限的,并且使用样式的时候,必须遵循 weex 定义的规则. 对于不遵循 weex 样式规则的代码,往往在 web 页面上有效,而在 native 环 ...

  10. java apache-commons-collections中Map辅助类的使用

    前言 apache-commons-collections中Map辅助类,很是有用.尽管我们通过原生Map经过业务逻辑处理也能达到相同的作用与效果,但毕竟作为一个开源的工具类辅助类,对它有个了解还是有 ...