PHP Strong and secure Password Generator Script
<?php class chip_password_generator { private $args = array( 'length' => 8, 'alpha_upper_include' => TRUE, 'alpha_lower_include' => TRUE, 'number_include' => TRUE, 'symbol_include' => TRUE, ); private $alpha_upper = array( "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ); private $alpha_lower = array( "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" ); private $number = array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ); private $symbol = array( "-", "_", "^", "~", "@", "&", "|", "=", "+", ";", "!", ",", "(", ")", "{", "}", "[", "]", ".", "?", "%", "*", "#" ); private $input = 4; public function __construct( $args = array() ) { $this->set_args( $args ); } public function chip_print( $var ) { echo "<pre>"; print_r($var); echo "</pre>"; } private function chip_parse_args( $args = array(), $defaults = array() ) { return array_merge( $defaults, $args ); } private function set_args( $args = array() ) { $defaults = $this->get_args(); $args = $this->chip_parse_args( $args, $defaults ); $this->args = $args; } public function get_args() { return $this->args; } private function get_alpha_upper() { return $this->alpha_upper; } private function get_alpha_lower() { return $this->alpha_lower; } private function get_number() { return $this->number; } private function get_symbol() { return $this->symbol; } private function set_password() { /* Temporary Array(s) */ $temp = array(); $exec = array(); /* Arguments */ $args = $this->get_args(); extract($args); /* Minimum Validation */ if( $length <= 0 ) { return 0; } /* Execution Array Logic */ /* Alpha Upper */ if( $alpha_upper_include == TRUE ) { $alpha_upper = $this->get_alpha_upper(); $exec[] = 1; } /* Alpha Lower */ if( $alpha_lower_include == TRUE ) { $alpha_lower = $this->get_alpha_lower(); $exec[] = 2; } /* Number */ if( $number_include == TRUE ) { $number = $this->get_number(); $exec[] = 3; } /* Symbol */ if( $symbol_include == TRUE ) { $symbol = $this->get_symbol(); $exec[] = 4; } /* Unique and Random Loop */ $exec_count = count( $exec ) - 1; $input_index = 0; //$this->chip_print( $exec ); for ( $i = 1; $i <= $length; $i++ ) { switch( $exec[$input_index] ) { case 1: shuffle( $alpha_upper ); $temp[] = $alpha_upper[0]; unset( $alpha_upper[0] ); break; case 2: shuffle( $alpha_lower ); $temp[] = $alpha_lower[0]; unset( $alpha_lower[0] ); break; case 3: shuffle( $number ); $temp[] = $number[0]; unset( $number[0] ); break; case 4: shuffle( $symbol ); $temp[] = $symbol[0]; unset( $symbol[0] ); break; } if ( $input_index < $exec_count ) { $input_index++; } else { $input_index = 0; } } // for ( $i = 1; $i <= $length; $i++ ) /* Shuffle */ shuffle($temp); /* Make Password */ $password = implode( $temp ); return $password; } public function get_password() { return $this->set_password(); } public function __destruct() { } } ?>
Live Demo of the Above Script hereYou can download the script