scripit per password

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
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.

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
 

Discussioni simili