Gestion de Contenu, de Communauté et de groupes de travail collaboratif - Open Source, français, sécurisé, stable et performant

  • MODULES

    Pour étendre les nombreuses fonctionnalités disponibles de base - modules.npds.org est à votre disposition.

    Des modules complémentaires, une communauté de développeurs active, des forums pour vos questions ... NPDS  est aussi une plateforme de développement !
  • STYLES

    Vous cherchez des thèmes graphiques pour votre portail ou votre communauté : styles.npds.org est à votre disposition.

    Des thèmes du plus simple au plus sophistiqué. Des thèmes facilement modifiables et toujours en Open-Source - Laissez simplement parler votre imagination !
  • BIBLES

    La documentation indispensable pour personnaliser et exploiter toute la puissante de NPDS  est à votre disposition sur bible.npds.org.

    Vous pouvez participer à l'effort de documentation - rien de plus simple : contactez un membre de la Team de développement et nous vous ouvrirons un compte sur le Wiki !
Devenir membre    |    Identifiant : Mot de Passe : -
Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.
Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu grâce aux puissants outils disponibles de base.
  • Multi langues (Français, Anglais, Allemand, Espagnol, Chinois)
  • Respect des standards : UTF8, XHTML, CSS, ...
  • Système de blocs avancés
  • Installation et administration complète et centralisée
  • Editeur HTML intégré
  • Gestionnaire de fichier en ligne
  • Gestion des groupes de membres
  • Ecriture collaborative de documents (PAD)
  • Forums évolués
  • Mini-sites (pour les membres et les groupes de travail)
  • Chat temp réel
  • Système de News et de rubriques complet (édition, révision, publication)
  • ...
Gratuit et libre (Open-Source), développé en PHP, NPDS est personnalisable grâce à de nombreux thèmes et modules et ne requiert que quelques compétences de base.
NPDS Workplace - groupe de travail collaboratif
 NPDS WorkSpace - tous l'univers du travail collaboratif.
Modéré par : developpeur jpb Jireck 
Index du Forum » » Le coin des codeurs » » permettre certains caractères spéciaux dans le login
Auteurpermettre certains caractères spéciaux dans le login
freud
113     

freud
  Posté : 06-05-2012 09:46

Salut les codeurs,

Quelqu'un saurait-il comment autoriser certains caractères spéciaux dans l’identifiant (accents)?

Avant de me pencher sur le filtre du formulaire d'inscription, j'ai tenté la connexion après avoir modifié un login existant via l'édition des utilisateurs.
J'ai essayé de différentes manières, en dur comme en entité HTML mais rien à faire, et je ne sais pas ou ça coince.

Le login est bien retrouvé dans la BDD mais je suis redirigé vers la page d'accueil sans être loggé. Une manip à faire avant l'encodage et envoi du cookie peut-être (base_64_encode) puis à l'extraction ?

Connexion et génération du cookie dans user.php : login() docookie()
Extraction du cookie dans mainfile.php : cookiedecode()

Si quelqu'un a ne serait-ce qu'une piste, merci
++

Edit : Le cookie "user" n'est pas généré, quelque ce soit en entité HTML ou non, mais le programme pousse bien jusqu'à la fonction docookie() lors de la tentative de connexion. C'est setcookie() qui n'opère pas.

Edit 2 : J'ai poussé un peu plus mes investigations en remplaçant la variable de l'encodage par le code souhaité directement :

MzpmcmV1ZG9ubmU6ZmExZGY5NTUw... (issu d'un login terminant par un "e", ça passe)
MzpmcmV1ZG9ubuk6ZmExZGY5NTUw... (issu du même login avec "é" à la place du "e", ça ne passe pas)

Message édité par : freud / 06-05-2012 10:30


  Profil  www  
developpeur
24581       
 

developpeur
  Posté : 06-05-2012 10:58

filtrage dans user.php je dirais

  Profil  E-mail  www  
freud
113     

freud
  Posté : 06-05-2012 11:14

Re,

J'ai une parade mais à prendre avec précaution, en clair ne pas l'appliquer n'ayant pas encore jaugé les incidences possibles sur certaines fonctions.

L'idée consiste à remplacer avant encodage les caractères spéciaux acceptés par le caractère non accentué correspondant, exemple avec le "e" :


function docookie($setuid, $setuname, $setpass, $setstory num, $setublockon) {

$caract = array('é', 'è', 'ê', 'ë');
$setuname = str_replace($caract, "e", $setuname);
$info = base_64_encode("$setuid:$setuname:".md5($setpass).":$setsto rynum:$setublockon");

...



Ainsi le cookie comporte le login sans accent, et la connexion fonctionne qu'on le saisisse avec ou sans accent.
Ceci étant, le login enregistré dans la BDD et celui du cookie peuvent donc différer, auquel cas si certaines fonctions d'NPDS comparent ces derniers pour une raison ou pour une autre ils ne seront évidemment pas reconnus comme étant identiques. Dès lors ça va coincer.
Il convient donc de localiser les éventuelles fonctions concernées (modération ou que sais-je encore).

Puisque lors de l'inscription la recherche parmi les pseudos existants est insensible à la casse et aux accents ça ne pause pas de problème de sécurité, ainsi on ne pourra avoir un utilisateur qui se nomme "héhé" et un autre "hehe" ou encore "HeHe".

  Profil  www  
freud
113     

freud
  Posté : 07-05-2012 14:50

Je vais devoir abandonner cette idée, ou tout au moins l'ajourner, devant l'ampleur de la tâche mais qui est propre à mon site.
Je pense que dans une version native de NPDS c'est largement faisable.

J'ai opté pour l'url rewriting et le pseudos sont inclus dans les urls des profils, et de fait je dois supprimer les accents dans ces urls. Ca se fait assez bien en passant par une fonction.

Mais j'ai aussi et surtout une toute nouvelle messagerie privée, très orientée ajax avec jquery. Le pseudo est passé comme argument dans différentes fonctions et ces accents me posent pas mal de problèmes. J'aurai tout mon programme de messagerie (php et !javascript!) à éplucher de fond en comble et il est assez conséquent, pour ne pas dire que c'est une vraie usine à gaz...

Sinon comme je le disais sous une version standard de NPDS j'y suis parvenu assez facilement.
Créer une fonction dans mainfile.php pour supprimer les éventuels accents des pseudos, puis appeler cette fonction chaque fois que nécessaire, c'est à dire pas souvent. A priori seulement :

-dans la fonction docookie() de user.php
-dans la fonction get_moderator() de function.php

Pour autoriser les accents lors de l'inscription ça se passe dans la fonction userCheck() de user.php, en ajoutant dans le preg_match les caractères autorisés


//Avant
if ((!$uname) || ($uname=="") || (preg_match('#[^a-zA-Z0-9_-]#',$uname))) ...

//Après
if ((!$uname) || ($uname=="") || (preg_match('#[^a-zA-Z0-9_-éèêëà]#',$uname)) ) ...



Je n'en ai mis que quelques uns pour l'exemple, à vous de voir.

Message édité par : freud / 07-05-2012 14:53


  Profil  www  
developpeur
24581       
 

developpeur
  Posté : 08-05-2012 19:38

Merci quand même

  Profil  E-mail  www  
Sauter à :

Temps : 0.0134 seconde(s)