Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[PS] Controllo sulla validita' del nome utente in Windows 7
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
balubeto
Dio minore
Dio minore


Registrato: 19/05/06 08:22
Messaggi: 757

MessaggioInviato: 08 Set 2010 11:51    Oggetto: [PS] Controllo sulla validita' del nome utente in Windows 7 Rispondi citando

Ho notato che lo script:

Codice:

$UserName   = Read-Host "Controllo sulla validita' del nome utente"

if ( $UserName -match "^\w{1,19}$" )     #Please note the lowercase w, means: 1 to 19 characters of the character class [a-zA-Z0-9_]
{
 Write-Host -Foreground green "Username '$UserName' is invalid"    #Now we take the valid case in the IF clause because it is easier to write
}
else
{
 Write-Host -Foreground red "Username '$UserName' is invalid"    # and the invalid case in the ELSE clause
}


mi scrive "Username $UserName is invalid" anche quando scrivo un nome che contiene degli spazi. Come mai?

GRAZIE

CIAO
Top
Profilo Invia messaggio privato
balubeto
Dio minore
Dio minore


Registrato: 19/05/06 08:22
Messaggi: 757

MessaggioInviato: 08 Set 2010 17:45    Oggetto: Rispondi citando

In Windows 7, i simboli che non possono essere usati nei nomi degli utenti sono solo /\[]":;<>+=,?*

Se cio` e' vero, come faccio a controllare se un nome di un utente contiene tutti i simboli permessi da Windows 7 (multilingua) eccetto i simboli indicati sopra?

GRAZIE

CIAO
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 09 Set 2010 11:05    Oggetto: Rispondi citando

con una espressione regolare che specifichi che non deve contenere nessuno di quei caratteri. oppure con un ciclo for e controlli che ogni carattere non sia tra quelli...
Top
Profilo Invia messaggio privato HomePage
balubeto
Dio minore
Dio minore


Registrato: 19/05/06 08:22
Messaggi: 757

MessaggioInviato: 09 Set 2010 11:54    Oggetto: Rispondi citando

SverX ha scritto:
con una espressione regolare che specifichi che non deve contenere nessuno di quei caratteri. oppure con un ciclo for e controlli che ogni carattere non sia tra quelli...


Ho creato questo script

Codice:

$UserName  = Read-Host "Checking the validity of the username"

if ( $UserName -match "^\w[\w\s]{0,17}\w$" )
{
 Write-Host -Foreground green "Username '$UserName' is valid"
}
else
{
 Write-Host -Foreground red "Username '$UserName' is invalid"
}


ma mi scrive che il nome dell'utente non e valido anche se questo nome e` composto da un solo numero (come "8" o "6") o se esiste il simbolo "-" fra i simboli accettabili. Quindi, come devo fare a risolvere questo problema?

GRAZIE

CIAO
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 09 Set 2010 15:29    Oggetto: Rispondi citando

a me sembra che la reg exp
"^\w[\w\s]{0,17}\w$"
dica "un carattere qualsiasi, poi da 0 a 17 caratteri qualsiasi o spazi, poi un carattere. invece volevi dire da 1 a 17 caratteri qualsiasi o spazi?
"^[\w\s]{1,17}$"
(ma 'spazio' è valido come nome utente?)
Top
Profilo Invia messaggio privato HomePage
balubeto
Dio minore
Dio minore


Registrato: 19/05/06 08:22
Messaggi: 757

MessaggioInviato: 09 Set 2010 16:59    Oggetto: Rispondi citando

SverX ha scritto:
a me sembra che la reg exp
"^\w[\w\s]{0,17}\w$"
dica "un carattere qualsiasi, poi da 0 a 17 caratteri qualsiasi o spazi, poi un carattere. invece volevi dire da 1 a 17 caratteri qualsiasi o spazi?
"^[\w\s]{1,17}$"
(ma 'spazio' è valido come nome utente?)


in windows 7 , lo spazio fra un simbolo valido e l`atro e` consentito ?

quindi , come risolvo il mio problema ?

grazie

ciao
Top
Profilo Invia messaggio privato
balubeto
Dio minore
Dio minore


Registrato: 19/05/06 08:22
Messaggi: 757

MessaggioInviato: 10 Set 2010 10:42    Oggetto: Rispondi citando

L'espressione "^[\w+\p{L}\s-]{1,17}$" funziona bene ma, purtroppo, convalida anche i nomi degli utenti che incominciano o finiscono con degli spazi. Quindi, come potrei risolvere questo problema?

In Windows 7, qual'e' la lunghezza massima per i nomi degli utenti?

GRAZIE

CIAO
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 10 Set 2010 14:33    Oggetto: Rispondi citando

e scrivere tipo
Codice:
"^\w[\w+\p{L}\s-]{0,15}[\w]{0,1}$"


ovvero un carattere qualsiasi, poi tra 0 e 15 caratteri qualsiasi spazi compresi, poi ancora eventualmente un carattere. non so se funziona però
Top
Profilo Invia messaggio privato HomePage
balubeto
Dio minore
Dio minore


Registrato: 19/05/06 08:22
Messaggi: 757

MessaggioInviato: 10 Set 2010 18:08    Oggetto: Rispondi citando

SverX ha scritto:
e scrivere tipo
Codice:
"^\w[\w+\p{L}\s-]{0,15}[\w]{0,1}$"


ovvero un carattere qualsiasi, poi tra 0 e 15 caratteri qualsiasi spazi compresi, poi ancora eventualmente un carattere. non so se funziona però


La tua espressione e` quasi perfetta tranne per il fatto che non convalida gli username che iniziano con il segno - . e` possibile fare questa correzzione?

GRAZIE

CIAO
Top
Profilo Invia messaggio privato
balubeto
Dio minore
Dio minore


Registrato: 19/05/06 08:22
Messaggi: 757

MessaggioInviato: 12 Set 2010 19:36    Oggetto: Rispondi citando

Ho scritto questo script:

Codice:

$UserName = Read-Host "Controllo sulla validita` di un nome utente"

if (($username.length -ge 1) -and -not(([regex]::isMatch($username,'^\s|\s$|^(\.|\s)+$|.{21,}|[\\/"\[\]:\|<>\+=;,\?\*@]')))) {
 Write-Host "Username '$UserName' is valid"
}
else {
 Write-Host "Username '$UserName' is invalid"
}


con questa espressione ^\s|\s$|^(\.|\s)+$|.{21,}|[\\/"\[\]:\|<>\+=;,\?\*@] che convalida anche i nomi degli utenti contenenti anche

numeri, caratteri accentati e tutti i simboli validi.

L`unico problema e` che vorrei eliminare almeno l`operatore -not in modo da rendere la condizione piu` snella ma non so come fare. Qualcuno ha qualche idea?

GRAZIE

CIAO
Top
Profilo Invia messaggio privato
balubeto
Dio minore
Dio minore


Registrato: 19/05/06 08:22
Messaggi: 757

MessaggioInviato: 13 Set 2010 19:51    Oggetto: Rispondi

Credo di avere trovato una soluzione piu` elegante o esiste un'altra soluzione ancora migliore di questa:

Codice:

$UserName = Read-Host "Checking the validity of the username"

if ( ($username.length -ge 1) -and ($UserName -notmatch '^\s|\s$|^(\.|\s)+$|.{21,}|[\\/"\[\]:\|<>\+=;,\?\*@]') ) {
 Write-Host "Username '$UserName' is valid"
}
else {
 Write-Host "Username '$UserName' is invalid"
}


Per caso, qualcuno vede qualche bug in questo script?

GRAZIE

CIAO
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi