Как поймать весь маршрут и вызвать функцию php внутри в шаблоне блейда

Ниже приведено небольшое сравнение скорости (только для Mac Os) ...:)

Для chrome 'plus' и 'mul' являются самыми быстрыми, Math.floor - самый медленный (> 700 000,00 оп / сек). Для Firefox 'plus' самый медленный (!) 'Mul' самый быстрый (> 900 000 000 оп / сек). В Safari «parseInt» - это посты, «число» является самым медленным (но resulats очень похожи,> 13 000 000 и 31 000 000). Таким образом, Safari для строки cast для int более чем в 10 раз медленнее, чем другие браузеры. Итак, победителем является «mul»:)

Вы можете запустить его в своем браузере по этой ссылке https://jsperf.com/casttonumber

0
задан ILoveTheDoggos 15 January 2019 в 19:38
поделиться

1 ответ

Хотя этот ответ должен работать для вас, я настоятельно рекомендую вам убедиться, что пользователи могут вызывать только определенные функции на вашем сервере. Это может быть ОГРОМНАЯ угроза безопасности, позволяющая пользователям передавать любое имя функции php и получать ответ от сервера.

Для этого я добавил массив $allowedFunctions, где вы можете указать, какие функции может вызывать пользователь.

Или вы можете создать класс, в котором вы можете определить методы, которые могут выполнять пользователи, а затем проверить, существует ли данный метод $function в вашем классе. Если это так, выполните функцию.

Вот как вы можете запустить свою функцию в представлении

В вашем routes/web.php добавьте это

Route::get('/someroute/{function?}', function($function = null) {
  // check that parameter is passed and that function exists
  if ( empty($function) || ! function_exists($function) ) {
    return 'Function not found';
  }

  /*
    here you can list functions that user can call
    - don't allow users to run any function that's not on this list
  */
  $allowedFunctions = [
    'test',
  ];

  if ( ! in_array($function, $allowedFunctions) ) {
    return 'Function not allowed';
  }

  return view('directory.phpfilename', [
    'function' => $function,
  ]);
})->where('function', '.*');

По вашему мнению, для запуска функции используйте

[ 111]

или

{{ call_user_func($function) }}
0
ответ дан ljubadr 15 January 2019 в 19:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: