' ; // ----------------------------------------------------------------------- $gap = str_repeat( ' ' , 4 ) ; $comma = '' ; // ----------------------------------------------------------------------- for ( $i = 33 ; $i <= 126 ; $i++ ) { if ( strpos( GREAT_KIWI_ALLOWED_PASSWORD_CHARACTERS , chr($i) ) === FALSE ) { echo $comma , chr($i) ; $comma = $gap ; } } // ----------------------------------------------------------------------- echo '
' ; // ----------------------------------------------------------------------- } // =========================================================================== // question_grouped_random_password() // =========================================================================== function question_grouped_random_password( $candidate_password , $options = array() ) { // ----------------------------------------------------------------------- // \greatKiwi_byFernTec_adSwapper_local_v0x1x210_passwords\ // question_grouped_random_password( // $candidate_password , // $options = array() // ) // - - - - - - - - - - - - - - - - - // Checks whether the $candidate_password is a grouped random password // like:- // k53t-xc92-v7k3 // etc // // Allowed password characters are those in:- // GREAT_KIWI_ALLOWED_PASSWORD_CHARACTERS // // Currently these are all the ASCII alphanumeric characters but:- // 0 1 5 6 8 // A B D E I O Q S U // a b e f i j l o q r s t u // // These are omitted because they're combinations like:- // 0/8/B/D/Q // 1/I/l // 5/S // etc // // that can easily be confused with each other. // // --- // // $options is like (eg):- // // $options = array( // 'number_groups' => 4 , // 'chars_per_group' => 4 , // 'group_separator' => '-' , // 'lowercase_only' => TRUE , // 'question_punctuation' => FALSE // ) // // --- // // NOTE! // ----- // With some combinations, it depends very much on the FONT used (as to // how similar two different characters look). Thus the above rules are // a worst-case set. Stuff is in there if in any common (web) font, // the chance of confusion exists. // // RETURNS // On SUCCESS // TRUE or FALSE // // On FAILURE // $error_message STRING // ----------------------------------------------------------------------- $ns = __NAMESPACE__ ; $fn = __FUNCTION__ ; // ----------------------------------------------------------------------- if ( ! is_string( $candidate_password ) ) { return <<