нужно ли отключать возможность push'а с форсом?
Что у Вас делают если в мастера случайно попало что-то, чего там быть не должно?
сверено с исходниками - все чисто
Есть мысли вынести сайты на уровень выше корня, оставив только точку входа
Как вообще проводится поиск эксплойтов на сайте, если идей никаких нет?
хранением базы данных в файле.
каждый модуль использовать как микросервис
представить не могу как расширить функцию парсинга команд
Как делается взаимосвязь между фронтендом и бэкендом?
как правильно делать бэкенд, в виде отдельных скриптов или в виде сервиса?
И как заливать изменения в проекте на сервер? С помощью GIT?
<?php
$query = new Select(
[
'table' => "1;DROP TABLE products;",
'fields' => [],
]
);
Как инициализировать свойства типа Объект в trait'ах PHP?
public function test(MyObject $object, $id)
{
if (!is_int($id)) {
throw new \InvalidArgumentException('Argument "id" must be int');
} elseif ($id < 0) {
throw new \InvalidArgumentException('Argument "id" must be positive');
}
...
public function checkPositive(int $intData): bool
Стоит ли продолжать заморачиваться с проверкой передаваемых данных в каждой функции?
<?php
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class InvalidRequestParam extends \InvalidArgumentException
{}
class MyController
{
/**
* @param Request $request
* @return Response
*/
public function myAction(Request $request)
{
try {
$intPostParam = $request->request->get('intPostParam');
$unsignedIntPostParam = $request->request->get('unsignedIntPostParam');
$md5GetParam = $request->query->get('md5GetParam');
$optionalDigitGetParam = $request->query->get('optionalDigitGetParam');
if (is_null($intPostParam)) {
throw new InvalidRequestParam('"intPostParam" is required');
} elseif (!is_numeric($intPostParam)) {
throw new InvalidRequestParam('"intPostParam" must be numeric');
}
if (is_null($unsignedIntPostParam)) {
throw new InvalidRequestParam('"unsignedIntPostParam" is required');
} elseif (!ctype_digit($unsignedIntPostParam)) {
throw new InvalidRequestParam('"unsignedIntPostParam" must be digit');
}
if (is_null($md5GetParam)) {
throw new InvalidRequestParam('"md5GetParam" is required');
} elseif (!preg_match('/^[\da-f]{32}$/', $md5GetParam)) {
throw new InvalidRequestParam('"md5GetParam" must be correct md5 hash');
}
if (!is_null($optionalDigitGetParam) && !ctype_digit($optionalDigitGetParam)) {
throw new InvalidRequestParam('"optionalDigitGetParam" must be digit or null');
}
// Тут ваша бизнес логика
return new Response('All params correct');
} catch (InvalidRequestParam $e) {
return new Response($e->getMessage(), Response::HTTP_BAD_REQUEST);
} catch (\Throwable $e) {
return new Response('Some thing went wrong', Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
}