Как справиться с ошибками при взломе сайта в PHP? - PullRequest
0 голосов
/ 30 апреля 2020

В моем сайте / приложениях у меня всегда есть некоторые константы, которые должны быть установлены, чтобы мой сайт работал. И мне интересно, как обрабатывать такие фатальные ошибки, когда я не могу установить переменную. Я пытаюсь найти сбалансированный способ написания сценария, который будет наиболее читабельным, коротким и даст достаточно отзывов.

Ради этого вопроса, скажем, у меня есть файл конфигурации. json со всеми данными, и я хочу проверить, существует ли необходимый файл и может ли он использоваться:

Обычно я использовал d ie () если условия не выполняются:

if(is_file('./config.json') && is_readable('./config.json')) define('CONFIG',json_decode(file_get_contents("./config.json"),true));

else die("Can't find or use config.json"); 

И вот мои проблемы:

  1. Обратная связь дает две причины возникновения ошибки, которую я не считаю достаточно хорошо, но я не большой поклонник создания отдельных проверок для каждой проблемы, потому что сценарий становится значительно больше, чем может быть. Есть ли обходной путь для этого?
  2. Правильно ли использовать функцию d ie () при завершении сценария? Пока я читаю, я не могу решить, когда и почему вы можете или не можете его использовать. Всегда ли exit () лучше подходит для обработки ошибок? Почему тот факт, что d ie () не предотвращает процедуры очистки, является плохим?
  3. Какой синтаксис используется:
if(!isset(CONFIG['pass']) exit('No password set.');

или

isset(CONFIG['pass']) or exit('No password set.');

есть ли разница?

или даже

CONFIG['pass'] or exit('No password set.');

, что дает две ошибки - Undefined index и мой «Пароль не задан». Что больше обратной связи, но это не обработанная ошибка, так что это не хорошо ?? Я не знаю

1029 * А вот мое ... спорное решение, создать функцию, которая будет задавать константы и завершает сценарий, когда он не может установить их:.
function setConst($constNames, $jsonData)
  {
    if (!is_array($constNames) || !is_array($jsonData)) return false;

    foreach ($constNames as $key) {
      isset($jsonData[$key]) or exit("There is no " . $key . " in config.json, terminating script");
      define($key, $jsonData[$key]);
    }
  }

$keys = ["_URL","_DOCUMENT_ROOT","_MODE","_TITLE","_LANG","_SERVER","_DB","_USER","_PASS"];
setConst($keys, $const);

Спасибо за все ответы и комментарии. Мне нужна помощь с этим ...

...