Na minha tabela, criei um índice em 'col1' para evitar entradas duplicadas, o que funciona bem, mas a mensagem de erro resultante exibida ao usuário quando ele tenta adicionar uma entrada duplicada parece-me uma preocupação de segurança, pois exibe o SQL incluindo o prefixo da tabela.
Existe alguma maneira de impedir que o Joomla exiba o SQL na mensagem de erro?
Eu tentei alterar as configurações de relatório de erros na configuração global, mas não tem efeito, tanto quanto eu posso dizer ...
Mensagem de exemplo:
Erro
Falha ao salvar com o seguinte erro: Entrada duplicada 'Test' para a chave 'TestKey' SQL = INSERT INTO `jml_mycomp_tbl1` (` id`, `col1`,` ordering`, `state`,` created_by`) VALUES ('0' , 'Teste', '2', '1', '730')
joomla-3.x
component
error-handling
doovers
fonte
fonte
display_errors
(configuração do PHP) deve estar desativada e esses erros devem ser registrados apenas no log de erros do lado do servidor.Respostas:
Talvez você possa usar um comando try catch:
fonte
JTable
a melhor solução foi substituir ocheck
método como na minha resposta.Como não parece possível evitar esse comportamento, implementei a seguinte solução. Adicione uma verificação duplicada a uma
JTable
check
substituição de método:fonte
Você deve alterar seu código que faz com que a inserção verifique primeiro a duplicação e retorne um erro adequado (que você escreve) ao usuário e não confie em mostrar o erro real retornado pelo MySQL.
fonte
JTable
, estaria mais inclinado a substituir ocheck
método e testar uma duplicata lá. Eu quero exibir uma mensagem de erro para o usuário, mas não com o SQL nele!