Я знаю, что это, как правило, осуждается, но по моим конкретным причинам, о которых я скажу ниже, мне нужна эта функциональность:
Итак, на этом веб-сайте мы разрешаем пользователямпокупать «магазины», в которых они могут продавать товары, и теперь эти пользователи хотят добавлять в свои магазины такие вещи, как «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 Pixel его пользователям, которые я хочу сохранить в своей базе данных:
<!-- 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 Forbidden при попытке использовать ErrorDocument для обработки запроса.
Сервер даже не позволяет мне выполнить маршрут, о котором идет речь, или любой другой маршрут из этой формы.до тех пор, пока я отправляю код.
Примечание:
Вероятно, это не фактическая проблема с разрешениями, а проблема, связанная с безопасностью, потому что я пытался изменить разрешения насервер для всех задействованных файлов от 0644 до 0755 и ничего не изменилось, конечно, я мог сделать что-то не так в пути, все предложения приветствуются.