Прежде всего: Пожалуйста, посмотрите на SQL-инъекции , потому что вы довольно уязвимы ...;)
Проблема в том, что Код ответа HTTP не настроен на что-то, что интерпретируется как ошибка при выдаче исключения PHP.Вы можете сделать что-то подобное, чтобы обойти это:
function exception_handler($exception) {
header("HTTP/1.1 400 Bad Request");
echo "Uncaught exception: " , $exception->getMessage(), "\n";
}
set_exception_handler('exception_handler');
Это установит обработчик исключений в вашу собственную функцию, которая устанавливает правильный заголовок HTTP перед выходом.Таким образом, jQuery теперь выдаст ошибку и вызовет обработчик ошибок вместо успеха.
Я выбрал 400 Bad Request в качестве кода состояния, потому что ошибка в этом случае, кажется, вызвана неправильным вводом.Я бы предложил создать подкласс для вашего собственного исключения , чтобы проверить, действительно ли это исключение, связанное с клиентом, и если нет, отправьте вместо него общую внутреннюю ошибку 500.
обработчик ошибок будет выглядеть примерно так (если вы назвали свой подкласс UserErrorException):
function exception_handler($exception) {
if($exception instanceof UserErrorException) {
header("HTTP/1.1 400 Bad Request");
} else {
header("HTTP/1.1 500 Internal Server Error");
}
echo "Uncaught exception: " , $exception->getMessage(), "\n";
}
set_exception_handler('exception_handler');