我知道通常对此并不满意,但是由于下面要说明的特定原因,我需要此功能:
因此,我们在该网站上所做的事情是,我们允许用户购买可以在其上销售产品的“商店”,现在这些用户希望在其商店中添加“ Facebook Pixel”之类的东西,以允许他们跟踪不同的活动。
这是我的表单负责代码
<form action="{{ url('vendor/store/settings/analytics/update') }}" method="POST" style="margin-top: 30px;">
{{ csrf_field() }}
<div class="analytics-form">
<div class="col-md-8 col-md-offset-2 analytics-box">
<div class="form-group">
<label for="">Please pick a type of analytics to install:</label>
<select name="analytic_type[]" id="" class="form-control">
@foreach($analytic_types as $type)
<option value="{{ $type }}">{{ ucwords(str_replace('_', ' ', $type)) }}</option>
@endforeach
</select>
<br>
</div>
<div class="form-group">
<label for="">Please type/paste the code for this analytic:</label>
<textarea class="form-control" cols="5" rows="5" name="analytic_code[]" required></textarea>
<br>
</div>
</div>
</div>
<button class="btn btn-primary btn-block" id="applyAnalytics" type="submit" {{ $store->vendor->hasAnalytics() ? '' : 'disabled'}}>Apply Changes</button>
</form>
这是我要“命中”的控制器方法:
public function updateAnalytics(Request $request)
{
try {
$store = auth()->user()->store;
auth()->user()->analytics()->delete();
if($request->has('analytic_type')) {
foreach($request->analytic_type as $index => $value) {
Analytics::create([
'user_id' => auth()->user()->id,
'analyticable_id' => $store->id,
'analyticable_type' => get_class($store),
'method_type' => $request->analytic_type[$index],
'method_code' => $request->analytic_code[$index],
]);
}
}
flash(__("Common.Saved_Successfully"));
} catch (\Exception $e) {
session()->flash('title', __("Common.Error"));
session()->flash('message', __("Common.An_Error_Happened"));
session()->flash('message-class', "error");
}
return redirect()->back();
}
如果我在文本区域中输入普通文本或代码,则该方法在本地可以正常工作,但是如果我尝试输入并提交以下代码块,一切都会炸毁,该代码块就是 Facebook提供的代码像素给用户,我想将其保存在数据库中:
<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '339673053324500');
fbq('track', 'PageView');
</script>
<noscript><img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=339673053324500&ev=PageView&noscript=1"
/></noscript>
<!-- End Facebook Pixel Code -->
如果将上面的代码放入文本区域并将数据提交到服务器,则会在下面显示此错误:
禁止
您无权访问此服务器上的/ app / public / vendor / store / settings / analytics / update。 此外,尝试执行403禁止错误时 使用ErrorDocument来处理请求。
只要我提交代码,服务器甚至都不允许我点击有问题的路线或该表单中的任何其他路线。
注意:
这可能不是实际的权限问题,而是与安全性相关的事情,因为我尝试将服务器上所有涉及的文件的权限从0644更改为0755,而没有任何更改,当然,我可能做错了顺便提一下,所有建议都欢迎。