considerato che eliox mi ha detto che al mio 1000° post mi banna, ho deciso di fare meno post ma più consistenti.
c'è qualcuno che ha la pazienza di dare un occhio al seguenete script (sembra grande ma sono più i commenti). si tratta di attribuire una passwrd ad un utente generandola in modo automatico.
un grazie per la pazienza.
p.s.
se qualcuno ritiene valido lo script può usarlo senza problemi
c'è qualcuno che ha la pazienza di dare un occhio al seguenete script (sembra grande ma sono più i commenti). si tratta di attribuire una passwrd ad un utente generandola in modo automatico.
PHP:
<?php
/*inizio funzione genera password-----------------------------------------*/
/*la funzione può generare (10+24*2)^$lunga password diverse*/
/*per $lunga=12 -> 14.492.253.520.096.019.136--------------------*/
function generatePsw($lunga){
$j=0; //azzero contatore
$password="";//vuoto e inizializzo la psw
while ($j < $lunga) {
$casuale= rand(48,122);//genera numero ASCI da "0" a "z"
if ($casuale > 47 and $casuale <= 57){ //0-9
$password .= chr($casuale);
$j ++;
}elseif ($casuale > 64 and $casuale <= 90){ //A-Z
$password .= chr($casuale);
$j ++;
}elseif ($casuale > 96 and $casuale <= 122){ //a-z
$password .= chr($casuale);
$j ++;
}
}
return $password;
}
/* fine funzione genera password-------------------------------*/
/*inizio verifica se usn o psw sono già esistenti---------*/
$caratteri=12;
$contaUSN=0;// conterà gli user presenti
$contaUSE=0;//conterà gli user uguali
include_once "connessione.php";//da togliere se con include vedi nota 1
$cercaUSN="SELECT usn FROM ragSoc ORDER BY id_D";//seleziona username o password
$queryUSN=mysql_query($cercaUSN);
$contaUSN=mysql_num_rows($cercaUSN);//verifico se e quanti record ho
$contaUSE=0;
/*in partenza ho $contaUSN= xyz (numero) e $contaUSE=0
incremento di 1 $contaUSE se user generato è diverso da user che ho nel DB
alla fine del whle "cicla gli user" se non ho trovato user uguali al generato $contaUSN=$contaUSE
se trovo un user = a generato non ho l'incremento e quindi $contaUSN diverso da $contaUSE
quindi non esco dal while "cicla e rigenera", generando un altro usn e ripetendo la verifica
*/
if($contaUSN> 0){ //ho almeno un record
while($contaUSN != $contaUSE){//cicla e rigenera USN
$user = generatePsw($caratteri);//genera un username
$contaUSE=0;//azzero il conteggio ogni volta che genero una psw
while($rigaUSN=mysql_fetch_array($queryUSN)){//cicla gli user
$esisteUSN=$rigaUSN[usn];//legge usn
if($esisteUSN != $user){$contaUSE++; }//conta le user diverse da generata - vedi nota 3 break?
}//fine while esplora usn esistenti
}//fine while se non uguali
}else{//sto generando la prima usn
$user=generatePsw($caratteri);//genera un username, in questo caso la prima - vedi nota 1
}//fine if
//finalmente ho usn che mi serve
echo "username ammesso: ".$user; //eventualmente return $user nota 1
/*fine verifica-----------------------------------------------------------*/
/*NOTE------------------------------------------------------------------*/
/*
1) da verificare se conviene trasformarla in function e fare
l'include dalla pagina di inserimento dati:
function laPassword($tabella,$campo,$lunga){....}
2) dopo la generazione di usn e psw inserire
$handle = printer_open();
printer_write($handle, "Text to print");
printer_close($handle);
dove text to print=Nome utente + usn + psw
vedi: http://it.php.net/manual/en/book.printer.php
3) verificare se mettere un break nell'IF in modo da uscire dal while interno
se trovo una uguale evitando di verificare tutti i record - il break funziona in
questo modo?o esce da entrambi i while?
se ok aggiungere }else{break;}
*/
/*fine NOTE-----------------------------------------------------------*/
?>
un grazie per la pazienza.
p.s.
se qualcuno ritiene valido lo script può usarlo senza problemi