Support » Ohjeet ja vianmääritys » Skandit ja erikoismerkit käyttäjänimessä (phpbb3-wordpress integraatio)

  • Moi!

    Minulla on suhteellisen suuri phpBB3 -pohjainen saitti jossa löytyy yli 18 000 käyttäjää, tarkoituksena olisi siirtyä käyttämään WordPressiä CMS:nä ja samalla enabloida multisite jolloin voisin käyttäjille tarjota blogitilaa.

    Ongelmaksi kuitenkin on muodostumassa se tosiasia että phpBB3 sallii lähes kaikenmuotoiset käyttäjänimet, käyttäjänimi voi siis sisältää ääkkösiä, erikoismerkkejä jne. melkeinpä missä muodossa tahansa. WordPress sen sijaan tykkää pahaa kaikista non-alpanumeric merkeistä (a-z 0-9 – _ @ . space).

    Pikaisesti laskettuna phpBB3 installaatiossa löytyy ~600 käyttäjää jotka ovat onnistuneet ottamaan itselleen käyttäjänimen joka on epäyhteensopiva WP:n kanssa. Toki ongelman voi ratkaista niin, että edellyttää käyttäjien vaihtavan käyttäjänimensä sopivaan muotoon – mutta mukavampi olisi kun WP suostuisi ottamaan vastaan ne siinä muosossa kuin ovat phpBB3:ssa.

    WP tullee käyttämään modifioitua versiota External DB authentication (http://wordpress.org/extend/plugins/external-database-authentication/) -pluginista, ja käyttäjäautentikaatio tullaan siis tekemään phpBB3 käyttäjäkantaa vastaan. (plugin lähtee julkiseen jakeluun jahka se on valmis ja testattu)

    Nykytilassa esim. käyttäjä jonka käyttäjänimi on phpBB3:ssa ”örkki”, muuttuu WP:n puolella => ”orkki”. Tämä ei oikein ole tavoitteenmukaista, kun kerran voisi olla olemassa käyttäjä jonka käyttäjänimi oikeasti olisi ”orkki” => WP:ssä kirjoittaisivat tiedot toisensa päälle vuoronperään, ja erilliset blogit olisivat pelkkä toive. Sama dilemma tulee eteen käyttäjänimillä joissa on muita erikoismerkkejä, WP poimii kylmästi ”turhat” pois nimimerkistä.

    Oletan etten ole ainoa joka tämän ongelman kanssa tuskailen, joten ratkaisu ongelmaan varmaan mielyttäisi monta muutakin 🙂

    Sam

Esillä 5 vastausta, 1 - 5 (kaikkiaan 5)
  • Hei Sam,

    Aluksi pitää huomauttaa, että erikoismerkkien poimiminen pois käyttäjänimestä tehdään puhtaasti tietoturvasyistä, joten kaikki muokkaukset heikentävät ainakin pieneltä osin sivuston tietoturvaa.

    Helpoin tapa sallia ääkköset ja erikoismerkit on suodattaa erikoismerkit poistavan sanitize_user -funktion paluuarvoa omalla funktiolla, esimerkiksi seuraavasti:

    add_filter( 'sanitize_user', 'arki_sanitize_user_filter', 10, 3 );
    
    function arki_sanitize_user_filter( $username, $raw_username, $strict ) {
    	return $raw_username;
    }

    Yllä esitelty funktio palauttaa täysin käsittelemättömän käyttäjänimen, jossa kaikki merkit on sallittu ja sitä ei pidä käyttää suoraan live-sivustoilla, mutta toivottavasti pääset sen avulla muokkaamaan itsellesi sopivan funktion.

    Lisäapuja saa WordPressin lähdekoodista, jossa sanitize_user -funktio on määritelty:
    http://core.trac.wordpress.org/browser/tags/3.2.1/wp-includes/formatting.php#L741

    Thread Starter Sam Salonen

    (@sam-salonen)

    Moi Arkimedia.fi,
    kaikkien merkkien salliminen käyttäjnimessä ei tietenkään ole tarkoituksenmukaista toimintaa, eikä näin ole meilläkään ajatuksena. Tärkeämpi olisikin sallia mm. ääkköset, jotka täällä meillä pohjolassa kuitenkin ovat aika yleisesti käytössä (tähän menneessä tässäkin tekstissä on 18 ääkkösilmentymää).

    Taidankin päätyä siihen että plugariin lisätään käyttäjänimen validointi erikoismerkkien osalta ennen kuin itse kirjautumisprosessi lähtee käyntiin. Yksinkertaisuudessa niin että tapauksissa joissa syötetty käyttäjänimi sisältää ei-sallitun merkin, tulostetaan kehoitus ottaa yhteys ylläpitoon käyttäjänimen vaihtoa varten.

    Ääkkösten osalta lienee paras tehdä ongelmasta tiketti WP:lle, ja toivoa että se huomioidaan seuraavassa versio julkaisussa. Kyseessä on kuitenkin hyvin pieni muutos koodiin, jonak avulla WP palvelisi paremmin käyttäjiä maissa joissa käytetään muutakin merkistöä alphanumeerista.

    Sam

    Tarkoitukseni oli antaa esimerkki, jonka avulla voit kirjoittaa oman funktion, joka sallii ääkköset käyttäjänimisssä.

    Oman funktiosi lähtökohtana on tuo esimerkkifunktion $raw_username, josta karsitaan pois kaikki merkit, joita ei käyttäjänimessä haluta olevan.

    En usko, että ääkköstukea lisätään suoraan seuraaviin WordPress-versioihin, koska sanitize_user -funktiossa on suodatin, joka on nimenomaan tarkoitettu tällaisiin muokkauksiin.

    Thread Starter Sam Salonen

    (@sam-salonen)

    Moi,
    koodin muokkaaminen ei ole mielekästä päivittämisen kannalta, vaikka tuon sanitize_user -funktion puukottaminen sopivaksi onkin pieni homma. Kokemuksesta kun editoinnit helposti unohtuvat, ja kirjoittuvat yli päivityksien yhteydessä.

    Ratkaisu taitaakin olla tuo validointi ennen kirjautumista, näin varmistuu ettei WP lähde omatoimisesti muokkailemaan käyttäjänimiä mieleisekseen. Vaikka se työllistääkin, kun joutuu muuttelemaan käyttäjänimiä yhteensopivaan muotoon.

    Sam

    WordPressin suodattimet (filters), jota esimerkissäni käytetään, ovat suunniteltu sitä varten, että lähdekoodiin ei tarvitse koskea, vaan muokkaukset voidaan hoitaa lisäosilla, jotka eivät ylikirjoitu päivityksissä.

    Ohessa malliplugari, jonka saat näkyviin hallinnan lisäosat-sivulle tallentamalla sen haluamallasi uniikilla nimellä wp-content/plugins -kansioon.

    <?php
    /*
    Plugin Name: Custom Sanitize User
    Description: Filters the output of sanitize_user() function
    Version: 0.1
    Author: Sam Salonen
    Author URI: http://www.aqua-web.fi/
    License: GPL2
    */
    
    /**
     * Adds filter to the output of sanitize_user() function
     */
    add_filter( 'sanitize_user', 'arki_sanitize_user_filter', 10, 3 );
    
    /**
     * Filter function for sanitize_user
     *
     * @param string $username The sanitized username.
     * @param string $raw_username The original unsanitized username.
     * @param bool $strict If set limits $username to specific characters. Default false.
     */
    function arki_sanitize_user_filter( $username, $raw_username, $strict = false ) {
    
    	// Remove unwanted characters here and return the username
    	return $raw_username;
    }
    
    ?>
Esillä 5 vastausta, 1 - 5 (kaikkiaan 5)
  • The topic ‘Skandit ja erikoismerkit käyttäjänimessä (phpbb3-wordpress integraatio)’ is closed to new replies.