Du solltest unbedingt Dinge in den Code einbringen wie:
PHP-Code:
// no direct access
defined('_JEXEC') or die('Restricted access');
Auch solltest Du an SQL Injection denken und z.B. so etwas anwenden :
PHP-Code:
..db->Quote( $value )
Dazu einmal in der Joomla Doku genau nachlesen WIE Datenbank Zugriffe mittels Joomla anzuwenden sind, z.B.
PHP-Code:
db->setQuery($query); db->query();db->getErrorNum () ....
.
Auch hätte ich nicht unbedingt eine Joomla-Framework-Tabelle verändert (hast Du doch, oder ?), sondern eine eigene Tabelle dafür erstellt. Diese kann man bei Deinstallation des Modules dann auch wieder einfach entfernen lassen. Zusätzlich könnte es Probleme bei einem Joomla-Update geben.
Das Vorgehen ist auch etwas 'oversized'. Ich würde mir z.B. die Gefahrenquelle $wert (hidden) einsparen. Du sagtest es soll je nur um Eins erhöht bzw. verringert werden ? Dann benötigst Du $wert nicht in der <form>. Ein if
PHP-Code:
( $wert_InDB == null ) $wert = 1 .. insert(uid,wert); else .. if ( 'ja' ) $wert += 1; else $wert -= 1.. update(uid,wert); .. (werte <0 nicht vergessen) )
würde reichen. Es gibt dann nur einen einfachen Textvergleich ( auch hier würde ich kurze Zahlenkonstanten nutzen, statt 'ja','nein' ) - kein übergebener Wert könnte etwas verursachen und vorallem kann niemand $wert auf seinen eigenen Wert setzen, manipulieren, usw.... Man kann sich auch eine Datenbank-Proc schreiben die das ganze noch mehr vereinfacht countx( uid, modus[plus|minus] ).
Gruß
Micha
Lesezeichen