Hei,
Minulla on jonkinlainen php javascript html koodi, jossa on sivustolle kirjautuminen, uuden käyttäjän rekisteröinti, hävinneen salasanan email, ja vielä käynnistäminen vieraana.
Nyt kuitenkin olen päättänyt käyttää vain tiedosto tallentamista, enkä aio vaivata päätäni mysql kannoilla lain.
Ongelma kohtana on seuraavat -
1) UTF8 vaika UTF16 ?
2) Kuinka tarkistaa että kirjautuminen sisältää vain sallittuja ääkkösiä ( a-ö A-Ö 0-9 ) ?
3) Kuinka tarkistaa että email osoite ei ole viallinen, en tahdo tarkistaa kuitenkaan että löytyykö osoitetta, kunhan on mahdollinen ?
4) Käyttäjätunnuksen ja salasanan pituus, ymmärtääkseni ä ö å vievät kaksi byteä, eli aaaaaa = 6 byteä, ääääää = 12 byteä, jos maksimi pituus on 10 merkkiä niin tuo on ongelma.
Nuo kun onnistuisin ratkomaan, niin, hyvä.
Netistä olen googlaamalla onnistunut löytämään monta examplea, noihin 2 ja 3 kohtiin, mutta, en yhtään jossa olisi ääkköset, eli ei täyttä varmuutta toimivuuteen ole kun en ymmärrä kuinka nuo ääkköset tallentuvat, nehän eivät taida olla 8 bittisiä vaan 16 bittisiä.
Onkos teillä kellään php koodia, preg_match vaikka, jossa olisi myös äöå kirjainten tarkistaminen käyttäjätunnus ja salasana stringistä, ja vielä myös email tarkistus jossa on mukana äöå.
Olen yhä sotalautapeli harrastaja, en virallinen koodaaja.
Edit. Tässä on tämän hetkinen vielä hieman säätelyjä vaativa kirjautuminen ja rekisteröinti - http://temp4322.dy.fi/TestiKansio002/
Tällainen koodinpätkä tuli mieleen, joka voisi soveltua.
<?php $tunnus = false; $salasana = false; $kirjautunut = "Ole hyvä ja kirjaudu sisään"; /** implementoi itse sisältö **/ function siivoa_syote($s) { return $s; } /** Ole todella varma merkistöstä **/ function tarkista_salasana($s) { if (mb_strlen($s, "UTF8") >= 8) { return true; } return false; } /** Implementoi sisältö **/ function tarkista_tiedot($t, $s) { return false; } /** * Tarkista onko lähtetetty mitään dataa * jos on, niin siivotaan sisältö kuntoon * muista rakentaa siivoa_syote funktio **/ if(isset($_POST['tunnus'])) { $tunnus = siivoa_syote($_POST['tunnus']); $salasana = siivoa_syote($_POST['salasana']); } /** * tarkistetaan salasanan kelvollisuus * tarkistetaan onko annettu tunnus, salasana pari olemassa **/ if (tarkista_salasana($salasana)) { if (tarkista_tunnus($tunnus, $salasana)){ $kirjautunut = "Tervetuloa {$tunnus}"; } } ?> <!DOCTYPE html> <html lang="fi"> <head> <meta charset="UTF-8" /> <title>Kirjautuminen</title> </head> <body> <?php /** Tulostetaan muuttuja **/ echo "<p>{$kirjautunut}</p>"; ?> </body> </html>
Nämä kaksi koodilohkoa tulevat siis peräkkäin samaan tiedostoon. Putkan koodisysteemi ei salli näköjään php- ja html-koodia samaan blokkiin.
(Mod. korjasi kooditagit.)
Kiitosta,
Mutta, minulla oli siis ongelmana nuo kirjaamani 4 kohtaa, ei itse kirjautumis koodi runko.
minulla on tässä tämä minun testi kirjautuminen, ei täysin asennettuna - http://temp4322.dy.fi/TestiKansio002/
Yritin tuossa hiukan vihjailla int mb_strlen ( string $str [, string $encoding ] )-funktion käytöstä. Emailiin varmaankin piisaaa ihan filter_var Pituuden rajoittaminen ei liene kauhean tarpeellista. Jokin tolkullinen alaraja olisi kaiketi paikallaan?
Kiitosta,
En huomannut tuota mb_strlen, onko sinulla vielä kokemusta tästä preg_match funktiosta, joka php:stä löytyy ?
Sitä on aika monimutkaisen näköistä riviä löytynyt netistä kun olen googlannut tuota "how to remove illegal characters php", mutta, ovat kaikki ilman ääkkösiä, jotenka aloitin tämän ketjun jotta sitten ei tule tilannetta että en olisi jotakin php kohtaa ymmärtänyt.
Mitä tarkoitat illegal character (ei tarvitse suomentaa), koska lähtökohtaisesti ei ole mitään tarvetta poistaa mitään merkkejä syötteestä.
illegal chars,
Minulla on itselläni määriteltynä 'illegal chars' määritelmään, kaikki a-ö A-Ö 0-9 kuulumattomat merkit.
Tahtoisin käydä lävitse tämän tarkistuksen joka tarkistaa sitten että mikään käyttäjätunnuksen taikka salasanan merkki ei ole yllämainittujen rajojen ulkopuolella.
No ei luulis olevan hirveän vaikeaa soveltaa mitä tahansa esimerkkiä, jossa on A-Z, a-z ja 0-9 lisäämällä sinne merkit åäöÅÄÖ. Ei millään pahalla, mutta pyrin kannustamaan kaikkia myös oman ajatustoiminnan hyödyntämiseen.
Se mitä tässä hämmästeltiin oli varmaankin, että miksi ihmeessä tuollainen rajoitus tarvitsee tehdä? Mikset saman tien rajoita vaikka merkkeihin P, K ja 8 ?
Chars,
Tämän viesti ketjun tarkoitus on varmistaa että kaikki sitten toimii php puolella minun palvelussani ihan oikein.
Ajattelusta puhuminen on kiellettyä eteenkin ihmisryhmien kohdalla, mutta, se koskee eussa myös valtaväestöstä puhumista, hyvät tavat täytyy ymmärtää jotta voi edetä elämässä ja uralla, huomauttaisin jälleen kerran että turha vähättely ja oman maineen parantaminen jonkun kustannuksella ei kuulu euroopan unionin foorumeihin, näistä keskustellaan ihan korkealla tasolla, meillä on suomessa paljon neuvostoliiton rakentamia lauseita jotka välillä tulevat pintaan pieninä ja isoina purkauksina, jonkun vähättely ja ohjaaminen ajatteluun jossa näytetään kuinka heikko joku on ovat yksiä yleisimpiä.
En ymmärrä ajatustoiminta sanaa ja p k 8 kohtaa, en tiedä mitä vastata tähän viestiisi.
Viestissäni minua hämää tämä että äöå ovat 16 bittisiä kirjaimia, mutta en ole varma, laitan huomenna koodi esimerkin, jossa tarkistan preg_matchin avulla stringiä, jossa osa merkeistä on 8bit ja osa 16bit.
En tiedä mitä vastata, minusta a-ö A-Ö 0-9 on ihan looginen rajoitus käyttäjänimeen ja salasanaan, jotta ne sitten ovat helposti muistettavia ja siistejä listoilla kun pelaa.
kpzpt kirjoitti:
minusta a-ö A-Ö 0-9 on ihan looginen rajoitus käyttäjänimeen ja salasanaan, jotta ne sitten ovat helposti muistettavia ja siistejä listoilla kun pelaa.
No minusta ei. Etenkään salasanaan.
Blaze kirjoitti:
No minusta ei. Etenkään salasanaan.
chars,
Mitä char sääntöjä olisi teidän mielestänne hyvä saattaa sivuston käyttäjätunnukseen taikka salasanaan ?
kpzpt kirjoitti:
Mitä char sääntöjä olisi teidän mielestänne hyvä saattaa sivuston käyttäjätunnukseen taikka salasanaan ?
Mielestäni kumpaakaan ei ole tarvetta rajoittaa millään tavalla. Tai jos nyt esimerkiksi nimeä haluat rajoittaa, niin kielletyt merkit voisi valita jollain loogisella perusteella, eikä vetää ihan hatusta. Miksi esim. suunnitelmasi mukaisesti é pitää kieltää, mutta esim. å tai 7 on sallittuja? Onko Håkan mielestäsi parempi nimi kuin Vilén ?
Mitä tulee tuohon, kun sanon, että pyrin kannustamaan koodaajia ajattelemaan itsekin koodatessaan... Tavoitteeni on linjassa esimerkiksi opetusministeriön koulutuksen ja tutkimuksen tietoyhteiskuntakehittämisen tavoitteiden kanssa. Ajattelemisen taito on määritelty yhdeksi neljästä tulevaisuuden perustaidosta. Jos vedät noista tavoitteista jotain kieroja mielleyhtymiä, niin se on kokonaan oma ongelmasi.
kpzpt kirjoitti:
En tiedä mitä vastata, minusta a-ö A-Ö 0-9 on ihan looginen rajoitus käyttäjänimeen ja salasanaan, jotta ne sitten ovat helposti muistettavia ja siistejä listoilla kun pelaa.
Minusta taas melkein toisinpäin. Jos vaikka nimeni olisi Anna-Kaisa Aho, niin en voisi kirjautua omalla nimelläni ja sitten pitäisi muistella että mikähän se minun käyttäjätunnus olikaan, kun systeemi ei antanut laittaa omaa nimeä siihen.
kpzpt kirjoitti:
Blaze kirjoitti:
No minusta ei. Etenkään salasanaan.
chars,
Mitä char sääntöjä olisi teidän mielestänne hyvä saattaa sivuston käyttäjätunnukseen taikka salasanaan ?
Mikä tahansa rajoite salasanaan on idioottimaista. Nimimerkeistä kieltäisin ihan käytännön syistä risuaidat ja kaiken mitä ei normaalissa proosassakaan tulisi käytettyä. Välilyönnitkin voisi kieltää, jos tarkoitus ei ole, että ihmiset osallistuvat omilla nimillään, mutta ehkä se on liian 2000-lukua.
Hei,
Minä kuitenkin laitan pienen rajoitteen näihin sivustoni käyttäjänimiin, ja hieman höllemmän sitten salasanaan.
Tässä olisi php funktio jota ajattelin käyttää, funktio on lyhyt mutta minulla meni monta viikkoa tässä.
<?php function validateChars ($stringi) { $stringi = stripslashes($stringi); if (preg_match("/^[a-zA-Z0-9_öäåÖÄÅ -=]+$/i", $stringi) ) return true; }
Tuon tarkoitus on tarkistaa käyttäjänimen laillisuus minun sivustoni sääntöjen mukaiseksi, eli sallittuja ovat "a-z A-Z 0-9 öäåÖÄÅ välilyönti -=", olen vielä myöhemmin valmis lisäämään näitä harvinaisempia 'suomalaisia' aakkosia ja kenties muutaman erikoismerkin ;)
Onko jotain tilanteita joissa tuo ei toimisi, tämä on oikeastaan ihan ensimmäinen laajemmin muitten käyttöön tuleva php funktio jonka kirjoitan.
Aion käyttää file tallennusta sivustollani, en käytä alkuun mysql kantoja lainkaan, jos tuon funktion avulla suodatan filenimen, niin, voiko olla tilanteita joissa ubuntun file säännöt estävät tiedoston tallennuksen.
Muistuttaisin taas että tämä on kaikki minulle ihan uutta..
Säännöllinen lausekkeesi hyväksyy myös nämä merkit: !"#$%&'()*+,./:;<
. Muuta järjestystä niin, että viiva on viimeinen [... =-]
tai escapeta se [... \-=]
.
Nimeämistä, merkkien valintaa tai whitespacen käyttöä en viitsi kommentoida.
jlairen jo kommentoimien lisäksi...
Toi vaikuttaa vähän oudolta ja potentiaalisesti* jopa vaaralliselta, että testaat ko. funktiossa onko annettu merkkijono ok stripslashes funktion jälkeen. Mitä jos unohdat käyttää stripslasheseja siellä, missä käytät tuota validateChars -funktiota?
Miksi muuten olet laittanut tuonne preg_matchiin i modifierin, kun kuitenkin määrittelet sekä isot että pienet kirjaimet?
Ja edelleen kommentoit että aiot käyttää validointia salasanaan. Onko suunnitelmasi kenties tallentaa salasanat selväkielisinä, vai miksi koet sen tarpeelliseksi?
*Nopeasti arvioisin että se ei aiheuta vaaraa, koska se ei vaikuta millään tavalla mihinkään. Eli sikäli ei paljoa haittaa mutta toisaalta ei mitään hyötyä.
Heh,
Hienoa että kysyin ennen kuin laitoin sivustolle toimintaan.
<?php function validateChars ($stringi) { $stringi = stripslashes($stringi); if (preg_match("/^[a-z0-9_öäåÖÄÅ =-]+$/i", $stringi) ) return true; }; }
Myöskin tuo stripslash() funktio täytyy vielä uudelleen sijoittaa.
Kirjoitan nyt tänä viikonloppuna tuon kirjautumisen ja laitan tänne mahdollisesti koko koodin arvioitavaksi kun on valmista, php koodia kuitenkin niin ei kait siintä ole niin haittaa vaikka se olisikin hieman julkista, kun ei mitään salasanoja ole kuitenkaan koodin joukossa, tämän file tallennus valintani tähden.
Kiitosta etukäteen arvioista, palannen viimeistään parin päivän sisään asiaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.