Bonjour, j'ai regardé rapidement ce module, à mon avis il sera utile a beaucoup de personnes, en l'améliorant un peut pour qu'il soit plus personnalisable, donc adaptable a l'utilisateur.
Donc voici mon avis sur ce module :
Côté technique : tu stockes les fichiers dans la base de donnée, pour des raisons de sécurité, ce qui est à première vue une bonne idée. Par contre si le nombre de clients augmente, ca risque de faire saturer le serveur mysql, et donc le site...
Une solution serait de stocker les fichiers normalement dans un répertoire d'upload, mais de le protéger par htaccess, et après pour la lecture ca serait le script php qui lirait le fichier, et l'enverrai au visiteur.
Je pense qu'à terme c'est mieux.
En parlant de sécurité, rien n'a l'air d'avoir été fait de ce coté :
en effet tu utilises un code pour simuler register_globals à on :
if(isset($_GET))
{
extract($_GET,EXTR_OVERWRITE);
}
else
{
echo 'erreur';
}
Déjà c'est pas très top niveau sécurité...
Mais le véritable problème est ta gestion des variables ainsi crées :
par exemple dans le fichier viewdoc.php, il y a
$sql = 'UPDATE '.$xoopsDB->prefix('clientspace_documents').' set lect=1 WHERE id='.$id;
$xoopsDB->queryF($sql);
la variable $id n'étant pas filtrée, on peut tout simplement faire du sql injection, et exécuter n'importe quelle requête sql, en étant un simple membre du site...
Un autre problème est que n'importe quel membre a accès aux documents de tous les membres, en mettant un id au pif, il tombe sur un document...
Bref pour corriger tout ca, il suffit de virer le code du début, et de le remplacer par
$id = intval($_GET['id']);
Comme ca déjà plus de sql injection.
Pour la gestion des droits utilisateurs, il faudrait rajouter un argument dans la requete, en utilisant la variable $uid, qui a déjà été renseignée.
Il serait aussi utile de tester si l'id correspond bien a un fichier existant appartenant au membre, et si non, mettre un message, plutot que d'envoyer un fichier...
Concernant la personnalisation, il serait dans un premier temps utile de permettre de changer les noms des catégories (bon la ce sont des images alors il faudrait peut etre changer ca...), mais ensuite on pourrait imaginer la possibilité d'ajouter d'autres rubriques, mais pour ca il faudrait changer la structure de la base de donnée, et ne plus faire une table par catégorie (car normalement les tables sont créées qu'à l'install...) du coup l'idée serait d'avoir une grande table qui contiendrait tous les types, avec un champ en plus type_id, pour les distinguer, et une 2em table qui contiendrait les infos liées à chaque type de documents.
Voilà voilà!
En tout cas c'est du bon boulot pour un 1er module!
Bonne continuation dans le codage de modules xoops!