当神不再是我们的信仰,那么信仰自己吧,努力让自己变好不辜负自己的信仰...
发表过的专栏文章
最近发表的话题
最近发表的评论
  • 【开源项目】星期一商城。用 Laravel 写了个商城,哈哈 at 1天前

    @Alex331349470 你的支付账号配置信息填写了吗?

  • 大家怎么防止表单重复提交的? at 1周前

    首先

    这个和小程序什么没有任何关系。
    你在页面加载的时候生成一个 form_token,只在页面加载时生成,那么其他时候就只会用这一个,那么只要你没有刷新页面,那么就永远不会变,当你提交的带上这个参数提交到后台。 那么你是觉得为什么做不到呢?

  • 大家怎么防止表单重复提交的? at 1周前

    @weir 我写的代码我不清楚,我不知道你为什么会有十次 token 不同?为什么点击十次就会有十个 token?你觉得 token 是在什么时候生成的? 素质三问。

  • 大家怎么防止表单重复提交的? at 1周前

    @weir 你可能需要看一下题目说的是 防止重复提交,而不是多次提交。
    重复提交我的定义是:单次的数据提交多次,更多是出现在 AJAX 提交。比如下订单,你点了,网络可能延迟一秒,前端也没有禁用按钮,然后你以为出 bug,然后一直点。这一秒延迟你点了十次,如果你不做验证,就会有十条订单记录。而如果用我说的那个方式,实际上发到后端的都是 form_token,后面的九次都是重复提交的,直接不进入控制器就行了

  • 【开源项目】星期一商城。用 Laravel 写了个商城,哈哈 at 1周前

    @yangyang2018 把你 QQ 私信发给我,我远程看一下。

  • 【开源项目】星期一商城。用 Laravel 写了个商城,哈哈 at 1周前

    @yangyang2018 配置好重写规则

  • 【开源项目】星期一商城。用 Laravel 写了个商城,哈哈 at 1周前

    @yangyang2018 截图 bootstrap/app.php 代码出来

  • 【开源项目】星期一商城。用 Laravel 写了个商城,哈哈 at 1周前

    @yangyang2018 这个是 PHP 版本太低,你的只有 5.6,

  • 【开源项目】星期一商城。用 Laravel 写了个商城,哈哈 at 1周前

    @yangyang2018 先执行 composer install

  • 请问 Laravel 中的路由缓存有什么用? at 2周前

    先说说走缓存方法的:

    你可以看看路由服务提供者的启动方法Illuminate\Foundation\Support\Providers\RouteServiceProvider::boot
    缓存的路由直接把缓存文件读取过来

    file

    file

    缓存文件大概长这个样

    file

    反序列化之后,这个路由类里已经存有所有定义好的路由

    不走缓存的

    而不是缓存的就走这里:

    file

    file

    file

    file

    因为不存在这个方法:

    file

    然后调用 group 方法

    file

    file

    因为前面传入的是路由文件名,就直接 require 了。

    file

    而我们的 web.php 又做什么呢,这个每个都都不同。大多数都是:

    Route::get();
    Route::post();

    真正耗时间的应该是这里了,如果你有一百条路由 你每一个动态的方法都要:

    file

    file
    后面可能很多,你可以自己再去看看。后面还要拼接前缀,中间件之类的,

  • 用最粗糙的方法,写出了查询简单的商品筛选的 SQL 语句,请问我该如何简化,使他看起来更优雅?? at 2周前

    写一段大概的代码,具体细节你需要再重写一下

         protected $orderByMap = [
            'assess_down' => ['assess_num', 'desc'],
            'price_up' => ['goods_price', 'asc'],
            'price_down' => ['goods_price', 'desc'],
            'publish_new' => ['goods_time', 'desc'],
        ];
    
        /**
         * @param Request $request
         * @return mixed
         */
        public function postTreat(Request $request)
        {
            // 页码
            $_page = $request->input("_page");
            $page = ($_page-1)*4;
    
            /**
             * 构建出一个公共的 Query
             *
             * @var $shopGoodsQuery \Illuminate\Database\Query\Builder
             */
            $shopGoodsQuery = DB::table('shop_goods')
                                ->where('goods_status', 1)// 0未审核 1审核通过 2审核未通过
                                ->where('goods_state', 0)// 0已上架 1已下架
                                ->where('goods_recycle', 0); // 0正常 1回收站;
    
            // 最低价
            $shopGoodsQuery->when($request->input('_priceSmall'), function (Builder $query, $priceSmall) {
                $query->where('goods_price', '>', $priceSmall);
            });
    
            // 最高价
            $shopGoodsQuery->when($request->input('_priceBig'), function (Builder $query, $priceBig) {
                $query->where('goods_price', '<', $priceBig);
            });
    
            // 是否按总和排序
            $shopGoodsQuery->when($request->input("_sales"), function (Builder $query, $sales) {
                $query->where('goods_num', 'desc');
            }, function (Builder $query, $sales) {
                // 不按总价排序的, 这个相当于 else
    
            });
    
            // 排序用 map 表映射找出字段排序
            $shopGoodsQuery->when($request->input("_sortType"), function (Builder $query, $sortType) {
                // 得到要排序的字段, 如果没有就按默认的第一种排序
                list($field, $orderBy) = $this->orderByMap[$sortType] ?? array_first($this->orderByMap);
                $query->orderBy($field, $orderBy);
            });
    
            // 最后进行统一分页
            $data = $shopGoodsQuery->skip($page)->take(4)->get();
    
            dd($data);
        }
  • 关于 Laravel 在 public/index.php 入口文件实例一个 model 对象,为何查找数据失败,连接解析器为 null? at 2周前

    先简单讲讲吧,容器虽然实例化了,但是整个程序的运行是靠 \App\Http\Kernel::class,而你以为容器虽然实例化了,可以实现简单的依赖注入,但是还是有很多问题的。比如有些类实例化不是注入对象,而是数组,字符串。这时候容器是没有办法解析的。而就需要通过服务提供者绑定解析。


    其实最核心的还是你能调用到\App\Http\Kernel::bootstrap()这个方法就行了。这个方法启动了整个程序,包括配置,服务提供者...
    你反过来想一想,你那一步连Config都没有载入,怎么得到正确的数据库配置呢?

    file

    file

    file

    file

    file

    file

  • 急!急!急!Laravel Guzzle 请求接口,数据验证错误却被 Laravel 项目异常捕捉? at 2周前
  • [武汉][7K-10K] 美美咖招聘 PHP 工程师 3 名 at 3周前

    layui 手动点赞一个

  • 大家怎么防止表单重复提交的? at 3周前

    @Littlesqx Cache
    时间短一点,一起提交过来的还有 csrf_token

  • 大家怎么防止表单重复提交的? at 3周前

    @Littlesqx 解释一下吧,免得更多的人问。

    1. 首先 str_random 总会生成一个唯一的字符串。这就代表我们缓存中的 key 总是唯一的
    2. 永远永远永远表单的提交只能一个一个提交,如果你能做到两个表单同时提交,也许真的有,我不知道而已😄(还有,即使两个表单同时提交也很肯定没有问题的。只要这两个表单都放 form_token 字段,并且使用 str:random 生成两个不同的,前面提到了唯一。一百个也没有问题)
      路上下雨,手机码字就暂时写这么多吧!
  • 大家怎么防止表单重复提交的? at 3周前

    3L 说了前端的方法,我说说后端的方法吧。
    新建一个中间件:

    <?php
    
    namespace App\Http\Middleware;
    
    use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
    
    class LimitFormRepeatSubmit extends Middleware
    {
         public function handle($request, Closure $next)
        {
            /****************************************
             * 1. 前端自己生成一个 form_token
             * 2. 如果 session 已经存在,则告诉重复提交
             ****************************************/
            $token = $request->input('form_token');
            if (cache()->has($token)) {
                return back()->with('status', '请不要重复提交');
            }
    
            cache([$token => 'value'], 1);
    
            return $next($request);
        }
    }
    

    前端页面

    <form action="">
        <input type="hidden" name="form_token" value="{{ str_random(40) }}">
      </form>
  • 请问怎么随机填充固定格式的浮点数? at 4周前

    换一种思维方式,两个随机数生成拼接

  • 应届毕业生发现刚入职的公司只是写写模版标签以及产生的疑惑,请教各位前辈? at 4周前

    所以说,找工作不仅仅是为了找工作。还要找到自己喜欢的工作。

  • 通过 header 中的 version 字段来做 API 多版本兼容 at 4周前

    @zedisdog 这个问题确实存在,不过你的方式也不能完美解决吧?你的需要加上版本的参数。