首页 > 解决方案 > 曲奇 PHP LARAVEL

问题描述

我有一个使用 jQuery 方法在 PHP 中创建的 cookie,其中客户端在输入中输入一个值,这个 cookie 是用该值创建的,而更多的值是用逗号创建的。

jQuery 中的示例创建 cookie:

<script type="text/javascript">
    $(function () {
        $("#btnAdd").click(function () {
            if($('#addtokendelivery').val() === ''){
            alert('Valor en Blanco');       
                                                   }
else {
            if ($.cookie('DeliveryToken')) {
            $.cookie("DeliveryToken", $.cookie("DeliveryToken") + ',' + $("#addtokendelivery").val());
            alert('Repartidores Agregados con Token´s: ' + $.cookie("DeliveryToken"));                  
            } else{
            $.cookie("DeliveryToken", $("#addtokendelivery").val());
            alert('Repartidor Agregado con Token: ' + $.cookie("DeliveryToken"));               
            }       
    }   
        });
        $("#btnRead").click(function () {
            alert($.cookie("DeliveryToken"));
        });
    });
</script>

谷歌浏览器值中的示例 cookie:

DeliveryToken: value1,value2,value3

在 laravel 中比较的变量示例:

$orderitemaddons32 = DB::table('users')->where('id', $id)->first();
$orderitemaddons32 = $orderitemaddons32->userdelivery_id;
//result variable dd laravel
"value1"

例如,如果它检测到值 1 在 cookie 中,它会继续显示页面。

我想要的是在 laravel 刀片中验证 cookie 是否与它在我的函数中创建的变量的信息匹配并显示页面,否则不显示它或发出信息无效的消息。

标签: javascriptphpjquerylaravel

解决方案


有很多方法可以做你想做的事。

为了在是否继续请求之前有条件,通常使用中间件。 https://laravel.com/docs/8.x/middleware 从中间件,您可以继续请求或将用户重定向到另一个页面。

我猜你的代码在 laravel 中可能是这样的:

$values = explode(',', $_COOKIE['DeliveryToken']);
if (in_array($orderitemaddons32, $values) {
    //all good, proceed
    // return $next($request);
} else {
    /*
    * return redirect()->route('home', [
    *        'message' => 'The information is not valid'
    *    ]);
    */
}

顺便说一句,我发现使用 cookie 并不能保证这种使用的安全性,我的意思是,从 javascript 设置它们,而不是加密它们并在服务器端保护它们。可以轻松更改 cookie 的值。您可以将 cookie 留给 laravel,因此也可以使用内置函数。


推荐阅读