Home › Toolset Professional Support › [Resolved] Split: User sign-up not working – validate user form
This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.
Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.
This topic is split from https://toolset.com/forums/topic/user-sign-up-not-working/
Tagged: Content-submission forms, CRED API, Toolset Forms
Related documentation:
This topic contains 10 replies, has 2 voices.
Last updated by geoffD 1 year, 4 months ago.
Assigned support staff: Minesh.
Hi Minesh..
On the user register form that you're working on, as well as logging the user in I also need to add some validation to make sure the user includes their first and last name.. The email seems to be required by default...
Also I need to add validation to the password so that it is at least 8 characters long and uses both letters and numbers...is this possible?
I shall look forward to hearing back from you
Thanks as always for all of your help and support
Best regards
Geoff
Hello. Thank you for contacting the Toolset support.
You can use the Toolset form's filter hook "cred_filter_field_before_add_to_form" to add both first_name and last_name fields as required.
I've added the following code to the "Custom Code" section offered by Toolset:
=> https://toolset.com/documentation/adding-custom-code/using-toolset-to-add-custom-code/
add_filter('cred_filter_field_before_add_to_form', 'required_user_fields_func', 10, 2); function required_user_fields_func($field, $computed_values){ if(in_array($field['id'], array('first_name', 'last_name'))){ $field['data'] = is_array($field['data']) ? $field['data'] : array(); $field['data']['validate']['required'] = array ( 'active' => 1, 'value' => 1, 'message' => 'This field is required' ); } return $field; }
If you can check now: hidden link
Both first_name and last_name fields are required.
That's great Minesh...but how would I add a validation for the password to be at least 8 characters long and a mix of letters and numbers..
Best regards
Geoff
but how would I add a validation for the password to be at least 8 characters long and a mix of letters and numbers..
==>
I was working on that issue only 🙂
I've added the following code to the "Custom Code" section offered by Toolset:
=> https://toolset.com/documentation/adding-custom-code/using-toolset-to-add-custom-code/
add_filter( 'cred_form_validate', 'func_check_password_len_with_numchar', 10, 2 ); function func_check_password_len_with_numchar( $error_fields, $form_data ) { $forms = array( 1562); list($fields,$errors)=$error_fields; if( in_array( $form_data['id'], $forms ) ){ $pass = isset($fields['user_pass']['value']) ? $fields['user_pass']['value'] : ''; $has_numb_char = preg_match('/[A-Za-z].*[0-9]|[0-9].*[A-Za-z]/', $pass); if( strlen($pass) < 8 and !$has_numb_char ){ $errors['user_pass'] = __('Password must include a minimum of 8 characters'); } } return array( $fields, $errors ); }
Now, it validates the password as you per your requirement.
Hi Minesh
I have tried a couple of different passwords and each time it brings up the validation message and won't send the form..
I've tried these passwords:
GURUguru
GURUguru17
Can you let me know exactly what the validation is please..
Gest regards
Geoff
Can you please check now: hidden link
I've adjusted the code as given under so it will display different errors - the password will only allow letters and numbers and password must be greater than 8 characters.
add_filter( 'cred_form_validate', 'func_check_password_len_with_numchar', 10, 2 ); function func_check_password_len_with_numchar( $error_fields, $form_data ) { $forms = array( 1562); list($fields,$errors)=$error_fields; if( in_array( $form_data['id'], $forms ) ){ $pass = isset($_POST['user_pass']) ? $_POST['user_pass'] : ''; if( strlen($pass) < 8 ){ $errors['user_pass'] = __('Password must include a minimum of 8 characters'); }else if(!ctype_alnum($pass)){ $errors['user_pass'] = __('Password must include letters and numbers'); } } return array( $fields, $errors ); }
Hi Minesh
This is great and all works fine however I want the user to use a mix of BOTH numbers and letters..so the user has to include at least ONE number e.g.
abcdefgh - this is wrong
abcdefg4 - this is correct
Hope that makes sense
Best regards as always
Geoff
abcdefgh - this is wrong
abcdefg4 - this is correct
==>
Yes - that validation already added. Please check that and feel free to close this ticket.
Hi Minesh
It still lets me create an account with the password 'abcdefgh' - This is incorrect as it is does not include numbers..I need the password to use BOTH numbers and letters..
Also Minesh my original ticket re the logging in after sign up seems to have gone cold...are you still working on this...just checking not pestering..I know you're busy!..
Thank you as always
Best regards
Geoff
Sorry - Yesterday - I was on a half-day holiday due to my bad health. I also replied on your original ticket as well.
Can you please check now: hidden link
I've adjusted the code as given under to validatae the passwords. I made few test and it works.
add_filter( 'cred_form_validate', 'func_check_password_len_with_numchar', 10, 2 ); function func_check_password_len_with_numchar( $error_fields, $form_data ) { $forms = array( 1562); list($fields,$errors)=$error_fields; if( in_array( $form_data['id'], $forms ) ){ $pass = isset($_POST['user_pass']) ? $_POST['user_pass'] : ''; $charnum_flag = preg_match('/[A-Za-z].*[0-9]|[0-9].*[A-Za-z]/', $pass); if( strlen($pass) < 8 ){ $errors['user_pass'] = __('Password must include a minimum of 8 characters'); }else if(!$charnum_flag){ $errors['user_pass'] = __('Password must include letters and numbers'); } } return array( $fields, $errors ); }
Can you please confirm it works at your end as well.
My issue is resolved now. Thank you!