W mojej tabeli utworzyłem indeks „col1”, aby zapobiec powielaniu wpisów, co działa dobrze, ale wynikowy komunikat o błędzie wyświetlany użytkownikowi podczas próby dodania zduplikowanego wpisu wydaje mi się problemem z punktu widzenia bezpieczeństwa, ponieważ wyświetla SQL, w tym prefiks tabeli.
Czy jest jakiś sposób, aby powstrzymać Joomla przed wyświetlaniem kodu SQL w komunikacie o błędzie?
Próbowałem zmienić ustawienia raportowania błędów w konfiguracji globalnej, ale nie ma to żadnego wpływu, o ile mogę stwierdzić ...
Przykładowa wiadomość:
Błąd
Zapis nie powiódł się z następującym błędem: Zduplikowany wpis „Test” dla klucza „TestKey” SQL = WSTAWIĆ DO „jml_mycomp_tbl1` („ id ”,„ col1 ”,„ zamawianie ”,„ stan ”,„ utworzono przez ”) WARTOŚCI („ 0 ” , „Test”, „2”, „1”, „730”)
źródło
display_errors
(ustawienie PHP) powinno być wyłączone, a takie błędy powinny być rejestrowane tylko w dzienniku błędów po stronie serwera.Odpowiedzi:
Może możesz użyć polecenia try catch:
źródło
JTable
z najlepszego rozwiązania, zastąpiłemcheck
metodę jak w mojej odpowiedzi.Ponieważ nie można zapobiec temu zachowaniu, zaimplementowałem następujące rozwiązanie. Dodaj zduplikowane sprawdzenie do
JTable
check
zastąpienia metody:źródło
Powinieneś zmienić kod, który powoduje, że wstawka najpierw sprawdza duplikat i zwraca użytkownikowi poprawny błąd (taki, który piszesz), a nie polegać na pokazywaniu rzeczywistego błędu zwróconego przez MySQL.
źródło
JTable
, byłbym bardziej skłonny do zastąpieniacheck
metody i przetestowania tam duplikatu. Chcę wyświetlić komunikat o błędzie dla użytkownika, ale nie z SQL!