Dans mon tableau, j'ai créé un index sur 'col1' pour éviter les entrées en double qui fonctionne bien, mais le message d'erreur qui en résulte affiché à un utilisateur lorsqu'il tente d'ajouter une entrée en double me semble être un problème de sécurité car il affiche le SQL, y compris le préfixe de la table.
Existe-t-il un moyen d'empêcher Joomla d'afficher le SQL dans le message d'erreur?
J'ai essayé de changer les paramètres de rapport d'erreurs dans la configuration globale mais cela n'a aucun effet pour autant que je sache ...
Exemple de message:
Erreur
L'enregistrement a échoué avec l'erreur suivante: Entrée en double 'Test' pour la clé 'TestKey' SQL = INSERT INTO `jml_mycomp_tbl1` (` id`, `col1`,` ordering`, `state`,` created_by`) VALUES ('0' , 'Test', '2', '1', '730')
la source
display_errors
(paramètre PHP) doit être désactivé et ces erreurs ne doivent être enregistrées que dans votre journal des erreurs côté serveur.Réponses:
Vous pouvez peut-être utiliser une commande try catch:
la source
JTable
la meilleure solution, c'était de remplacer lacheck
méthode comme dans ma réponse.Puisqu'il ne semble pas possible d'empêcher ce comportement, j'ai implémenté la solution suivante. Ajoutez une vérification en double à un
JTable
check
remplacement de méthode:la source
Vous devez modifier votre code qui fait l'insertion pour vérifier d'abord la duplication et renvoyer une erreur appropriée (que vous écrivez) à l'utilisateur et ne pas compter sur l'affichage de l'erreur réelle retournée par MySQL.
la source
JTable
je serais plus enclin à remplacer lacheck
méthode et à y rechercher un doublon. Je veux afficher un message d'erreur à l'utilisateur, mais pas avec le SQL!