Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: preg match

Pallo [12.06.2008 15:00:48]

#

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?

Wizard [12.06.2008 15:23:04]

#

Preg_match ei sovi tuohon tarkoitukseen kovin kätevästi, käytä seuraavaa:

<?php
if(ctype_alnum('Ohjelmointiputka')):
    echo 'Kelpaa.';
endif;
?>

jlaire [12.06.2008 15:53:23]

#

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.

Pallo [12.06.2008 16:59:40]

#

Kiitoksia, ctype_alpha hoitaa homman kätevästi.

Wizard [12.06.2008 20:05:07]

#

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).

walkout_ [15.06.2008 00:34:03]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta