In meiner Tabelle habe ich einen Index für 'col1' erstellt, um doppelte Einträge zu verhindern, was gut funktioniert. Die resultierende Fehlermeldung, die einem Benutzer angezeigt wird, wenn er versucht, einen doppelten Eintrag hinzuzufügen, scheint mir jedoch ein Sicherheitsrisiko zu sein, da SQL einschließlich angezeigt wird das Tabellenpräfix.
Gibt es eine Möglichkeit, Joomla daran zu hindern, SQL in der Fehlermeldung anzuzeigen?
Ich habe versucht, die Einstellungen für die Fehlerberichterstattung in der globalen Konfiguration zu ändern, aber es hat keine Auswirkungen, soweit ich das beurteilen kann ...
Beispielnachricht:
Error
Das Speichern schlug mit folgendem Fehler fehl: Doppelter Eintrag 'Test' für Schlüssel 'TestKey' SQL = INSERT INTO `jml_mycomp_tbl1` (` id`, `col1`,` order`, `state`,` created_by`) VALUES ('0') , 'Test', '2', '1', '730')
quelle
display_errors
(PHP-Einstellung) deaktiviert sein und solche Fehler sollten nur in Ihrem serverseitigen Fehlerprotokoll protokolliert werden.Antworten:
Vielleicht können Sie einen try catch-Befehl verwenden:
quelle
JTable
die beste Lösung verwendet habe, war es, diecheck
Methode wie in meiner Antwort zu überschreiben .Da es anscheinend nicht möglich ist, dieses Verhalten zu verhindern, habe ich die folgende Lösung implementiert. Fügen Sie einer
JTable
check
Methodenüberschreibung eine doppelte Prüfung hinzu :quelle
Sie sollten Ihren Code so ändern, dass die Einfügung zuerst nach Duplikaten sucht und dem Benutzer einen ordnungsgemäßen Fehler (einen, den Sie schreiben) zurückgibt, und sich nicht darauf verlassen, dass der von MySQL zurückgegebene tatsächliche Fehler angezeigt wird.
quelle
JTable
wäre ich eher geneigt, diecheck
Methode zu überschreiben und dort auf ein Duplikat zu testen. Ich möchte dem Benutzer eine Fehlermeldung anzeigen, nur nicht mit dem SQL darin!