Ca ne sert strictement à rien htmlspecialchars sur un nom de fichier, ça n'a rien à voir avec les XSS.
Quant aux accents :
1. ça dépend de l'OS déjà (un nom de fichier en UTF-8 c'est impossible sous Windows avec les fonctions standard - sans passer par l'extension COM ou des extensions tierces comme php-wfio)
2. il faut reprendre strictement le même jeu (sinon forcément si les points de code >= 0x80 ne sont pas codés pareils, on ne risque pas de trouver le fichier)
C'est clair qu'il serait plus censé d'utiliser l'id, si vraiment on devait créer physiquement un répertoire, surtout si c'est la seule information réellement fixe (quid d'un changement de pseudo ?).
Quant aux accents :
1. ça dépend de l'OS déjà (un nom de fichier en UTF-8 c'est impossible sous Windows avec les fonctions standard - sans passer par l'extension COM ou des extensions tierces comme php-wfio)
2. il faut reprendre strictement le même jeu (sinon forcément si les points de code >= 0x80 ne sont pas codés pareils, on ne risque pas de trouver le fichier)
C'est clair qu'il serait plus censé d'utiliser l'id, si vraiment on devait créer physiquement un répertoire, surtout si c'est la seule information réellement fixe (quid d'un changement de pseudo ?).