Yritän saada seuraavalla pätkällä tarkistettua, että merkkijono sisältää vain
kirjaimia a-z.
if (preg_match("/^[a-z]$/i", "Ohjelmointiputka")) { echo "Kelpaa."; }
Koodi ei kuitenkaan toimi. En ole ikinä ennen
preg_matchiä kunnolla käyttänyt, joten voisiko joku valaista mitä
teen väärin?
Preg_match ei sovi tuohon tarkoitukseen kovin kätevästi, käytä seuraavaa:
<?php if(ctype_alnum('Ohjelmointiputka')): echo 'Kelpaa.'; endif; ?>
Säännöllinen lausekkeesi hyväksyy vain yhden merkin mittaiset merkkijonot. Kokeile, toimiiko tämä:
/^[a-z]*$/i
Tuo ctype_alnum taitaa hyväksyä myös numerot, mutta ctype_alpha pelkästään kirjaimet.
Kiitoksia, ctype_alpha hoitaa homman kätevästi.
funktio kirjoitti:
Säännöllinen lausekkeesi hyväksyy vain yhden merkin mittaiset merkkijonot. Kokeile, toimiiko tämä:
/^[a-z]*$/i
.Tuo ctype_alnum taitaa hyväksyä myös numerot, mutta ctype_alpha pelkästään kirjaimet.
Ajatusvirhe näköjään tuli. Tuossa metodissa kannattaa huomioida, että se on C-pohjainen ja se todellakin hyväksyy vain a-z & A-Z. Erikoismerkkejä ei hyväksytä (joita esim. skandit ovat).
Wizard kirjoitti:
Preg_match ei sovi tuohon tarkoitukseen kovin kätevästi, käytä seuraavaa:
<?php if(ctype_alnum('Ohjelmointiputka')): echo 'Kelpaa.'; endif; ?>
En ole funktioon enempää etinyt perehtyä mutta mitäs jos on vähän monimutkaisempi homma kuin vain että Stringissä saa olla vain ctype_alnum:n sallimat merkit.
Siis että esim. salasana saa sisältää merkit A-Za-z0-9!"@#£¤$%&/(){[]}\?+-.,;:_*'
Ja sitten teitysti, että salasanan vahvuus tarkisetaan että se on väh 6 mekkiä kuitenkin korkeintaan 32 merkkiä ja mallia Agm.FF#mk98 <-- tosin tämä malli saatta aiheuttaa ongelmia MAC ja peräti Linux-käyttäjille koska MACissä ainakin merkki @ tai joku muu kenties antaa väärän merkin eikä sitten kirjautuminen onnaakkaan, jos salasana on tehty Windowsin kautta. Kokemusta on myös että jos esim. jonkun softan SVN tunnarit sisältää esim. merkin # ja sitten softat päivitetään uusimpaan niin tunnarit ei toimikkaan kun softaan on tehty esim. merkistömuutoksia. Ainakin CollabNet SFEE:ssä Web-selain puoli toimi mutta SVN lakkasitoimimasta kaikilla tunnuksilla joissa oli merkkejä #, @, tms. Vanhemassa versiossa ei ollut ongelmia. Salasanan vahvuus kasvaa jos siinä voi olla joitakin erikoismerkkejä mutta ehkä ne voisi olla vain _-,.:;
Se vaan että jos käyttäjä voi laittaa käyttäjä tunnukseen vaikka kiinalaisia merkkejä olisi ongelma.
Ehto olisi
1 kpl Numeroita
1 kpl Pieniä kirjamia
1 kpl Isoja kirjaimi
1 kpl Erikosmerkkejä joita on järkevää olla salasanassa
Väh 6 merkkiä
Korkeintaan 32 mekkiä
Ei voi olla vain pelkkä järkipohjainen Sana tai Nimi.
Löisin tämän, mutta jos erikoismerkkejä sallitaan niin on vaara että sitten käyttäjätunnukset ei toimikaan kaikissa koneissa.
https://www.php.net/manual/en/function.ctype-graph.php
Aihe on jo aika vanha, joten et voi enää vastata siihen.