En mi tabla, he creado un índice en 'col1' para evitar entradas duplicadas que funciona bien, pero el mensaje de error resultante que se muestra a un usuario cuando intenta agregar una entrada duplicada me parece un problema de seguridad, ya que muestra el SQL incluyendo El prefijo de la tabla.
¿Hay alguna forma de evitar que Joomla muestre el SQL en el mensaje de error?
Intenté cambiar la configuración de informes de errores en la configuración global, pero no tiene ningún efecto por lo que puedo decir ...
Mensaje de ejemplo:
Error
Save falló con el siguiente error: Duplicar la entrada 'Test' para la clave 'TestKey' SQL = INSERTAR EN `jml_mycomp_tbl1` (` id`, `col1`,` ordering`, `state`, 'created_by`) VALUES (' 0 ' , 'Prueba', '2', '1', '730')
joomla-3.x
component
error-handling
doovers
fuente
fuente
display_errors
(configuración de PHP) debe estar desactivado y dichos errores solo deben registrarse en su registro de errores del lado del servidor.Respuestas:
Tal vez pueda usar un comando try catch:
fuente
JTable
la mejor solución fue anular elcheck
método como en mi respuesta.Como no parece posible evitar este comportamiento, implementé la siguiente solución. Agregue una verificación duplicada a una
JTable
check
anulación de método:fuente
Debe cambiar su código que hace que la inserción primero verifique si hay duplicados y devuelva un error apropiado (uno que usted escribe) al usuario y no confiar en mostrar el error real devuelto por MySQL.
fuente
JTable
, estaría más inclinado a anular elcheck
método y probar un duplicado allí. Quiero mostrar un mensaje de error al usuario, ¡pero no con el SQL!