Проверка input на минимальное кол-во символов
Добрый день всем. Есть такой код (форма регистрации) -
<form name="registerform" id="registerform<?php $template->the_instance(); ?>" action="<?php $template->the_action_url( 'register' ); ?>" method="post"> <p> <label for="user_login<?php $template->the_instance(); ?>"><?php _e( 'Username' ); ?></label> <input type="text" name="user_login" id="user_login<?php $template->the_instance(); ?>" class="input" value="<?php $template->the_posted_value( 'user_login' ); ?>" size="20" /> </p> <p> <label for="user_email<?php $template->the_instance(); ?>"><?php _e( 'E-mail' ); ?></label> <input type="text" name="user_email" id="user_email<?php $template->the_instance(); ?>" class="input" value="<?php $template->the_posted_value( 'user_email' ); ?>" size="20" /> </p> <?php do_action( 'register_form' ); ?> <p id="reg_passmail<?php $template->the_instance(); ?>"><?php echo apply_filters( 'tml_register_passmail_template_message', __( 'A password will be e-mailed to you.' ) ); ?></p> <p class="submit"> <input type="submit" name="wp-submit" id="wp-submit<?php $template->the_instance(); ?>" value="<?php esc_attr_e( 'Зарегистрироваться' ); ?>" /> <input type="hidden" name="redirect_to" value="<?php $template->the_redirect_url( 'register' ); ?>" /> <input type="hidden" name="instance" value="<?php $template->the_instance(); ?>" /> <input type="hidden" name="action" value="register" /> </p> </form> Хочу ввести проверку поля user_login на минимальное количество символов, пытаюсь подключить jquery validate (смотрел http://goo.gl/9yad3J ) , но видимо из-за того что у меня id не просто user_login , user_login<?php $template->the_instance(); , то проверка не срабатывает. Пожалуйста подскажите как решить эту проблему. Мне нужна только проверка на минимальную длину логина. |
<form> <input required="" pattern="[A-Za-z0-9_-]{4,8}" /> <button type="submit">Зарегаться</button> </form> |
Цитата:
P.S. В карму дважды не могу добавить, спасибо не кому больше сказать, а требуют. |
Не подходит pattern= , через firebug если удалить это свойство, то проверка отключается. Может всё таки с jquery validate подскажете? Как его прикрутить?
|
Цитата:
Проверка на клиенте (в браузере) - это чисто ради удобства юзера. У тебя ведь помимо этой проверки непосредственно сервер тестирует входные данные, ведь так? Ведь сколько раз повторяют вам: не доверяй ничему что приходит от клиента. Все проверяй на своем сервере. |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Нашёл ответ, http://www.webdeveloper.com/forum/sh...m-length-check , но незнаю пока как реализовать то что там написано.
|
Цитата:
|
Цитата:
OpenServer (что то типа денвера) или PHPMyAdmin? |
Цитата:
|
Цитата:
Теперь к вопросам - а как через apache настроить? |
Цитата:
клиент - сервер приложений - сервер базы данных запросы от клиента куда направляются? правильно, к серверу приложений к нему прикручен какой-нибудь модуль (php, java ...) ...... (дальше сам) PS: попробуй поставить все компоненты системы по отдельности и после того как у тебя всё получится, количество вопросов должно резко уменьшиться ;) |
попробуй ещё это
https://github.com/digitalBush/jquery.maskedinput |
Цитата:
|
Вчера нашел вот такую штуку https://github.com/itsananderson/wp-...ord-length.php ,
код такой <?php /* * Plugin Name: Minimum Password Length * Description: Enforce a minimum password length. * Plugin URI: http://www.itsananderson.com/plugins/minimum-password-length * Plugin Author: Will Anderson * Author URI: http://www.itsananderson.com/ * Version: 1.0 */ class WP_Minimum_Password_Length { public static function start() { add_action( 'user_profile_update_errors', array( __CLASS__, 'minimum_password_limit' ) ); } public static function minimum_password_limit( &$errors ) { // Edit this value to change the minimum password length. // Set value to zero or disable plugin to remove length requirement. $min_length = 7; if ( !empty( $_POST['pass1'] ) && $_POST['pass1'] === $_POST['pass2'] && strlen( $_POST['pass1'] ) < $min_length ) { $errors->add( 'min_pass_length', sprintf( __( '<strong>ERROR</strong>: Password must be at least %d characters long.' ), $min_length ), array( 'form-field' => 'pass1' ) ); } } } WP_Minimum_Password_Length::start(); он для проверки минимальной длины поля с паролем, пытаюсь переделать его под свои нужды <?php class WP_Minimum_login_Length { public static function start() { add_action( 'user_profile_update_errors', array( __CLASS__, 'minimum_login_limit' ) ); } public static function minimum_login_limit( &$errors ) { $min_length = 4; if ( !empty( $_POST['pass1'] ) && $_POST['pass1'] === $_POST['pass2'] && strlen( $_POST['pass1'] ) < $min_length ) { $errors->add( 'min_login_length', sprintf( __( '<strong>ERROR</strong>: Password must be at least %d characters long.' ), $min_length ), array( 'form-field' => 'user_login' ) ); } } } WP_Minimum_login_Length::start(); но непойму что сделать с 10 строкой, как там правильно записать, т.к. с php не знаком. Помогите доделать (или сделать) код. Кстати тег <? php не должен закрываться тегом ?> в данном случае ? |
Цитата:
|
<form action="reg.php" method="post"> <input name="login" type="text" /> <input type="submit" value="Send" /> </form> reg.php: if(strlen($_POST['login']) < 4) exit('Слишком короткий логин!'); //....code |
Ruslan_xDD, логин из четырех пробелов спокойно пройдет проверку :)
|
Цитата:
action="<?php $template->the_action_url( 'register' ); ?>" из строки <form name="registerform" id="registerform<?php $template->the_instance(); ?>" action="<?php $template->the_action_url( 'register' ); ?>" method="post"> вставить action="reg.php"ну или хотя бы где в готовом коде прописать if(strlen($_POST['user_login']) < 4) exit('Слишком короткий логин!'); |
Цитата:
|
Цитата:
<input type="text" name="user_login" id="user_login<?php $template->the_instance(); ?>" class="input" value="<?php $template->the_posted_value( 'user_login' ); ?>" action="<?php if(strlen($_POST['user_login']) < 4) exit('Слишком короткий логин!'); ?>" size="20" /> ничего не работает, объясни пожалуйста куда там надо её вписать. А то инфа может и 146%, но я не пойму как ей воспользоваться. |
liringea, зачем php скрипт проверки логина вставлять в action? :blink:
Вставляйте скрипт туда, куда отсылается запрос. if(!preg_match('/^[a-z0-9_-]{4,15}$/i', $_POST['login'])) exit('Неверно заполнено поле «Логин»'); |
Цитата:
$key = preg_replace('/[^a-z0-9]/i', '', $key); я пробую её поменять на $key = preg_replace('/^[a-z0-9_-]{4,15}$/i', '', $key); но ничего не работает наешл здесь тему http://mywordpress.ru/support/viewtopic.php?id=19746 , человек пытается добавить кирилические символы в имена пользователей, ему советуют в functions.php добавить код function allow_cyrillic_usernames($username, $raw_username, $strict) { $username = wp_strip_all_tags( $raw_username ); $username = remove_accents( $username ); $username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username ); $username = preg_replace( '/&.+?;/', '', $username ); if ( $strict ) $username = preg_replace( '|[^a-zа-я0-9 _.\-@]|iu', '', $username ); $username = trim( $username ); $username = preg_replace( '|\s+|', ' ', $username ); return $username; } add_filter('sanitize_user', 'allow_cyrillic_usernames', 10, 3); как нибудь этот код можно переделать под мои нужды? |
Цитата:
if(!preg_match('/^[a-z0-9_-]{4,15}$/i', $key)) exit('Неверно заполнено поле «Логин»'); $key = preg_replace('/[^a-z0-9]/i', '', $key); |
Цитата:
/** * Handles registering a new user. * * @param string $user_login User's username for logging in * @param string $user_email User's email address to send password and add * @return int|WP_Error Either user's ID or error on failure. */ function register_new_user( $user_login, $user_email ) { $errors = new WP_Error(); $sanitized_user_login = sanitize_user( $user_login ); $user_email = apply_filters( 'user_registration_email', $user_email ); // Check the username if ( $sanitized_user_login == '' ) { $errors->add( 'empty_username', __( '<strong>ERROR</strong>: Please enter a username.' ) ); } elseif ( ! validate_username( $user_login ) ) { $errors->add( 'invalid_username', __( '<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username.' ) ); $sanitized_user_login = ''; } elseif ( username_exists( $sanitized_user_login ) ) { $errors->add( 'username_exists', __( '<strong>ERROR</strong>: This username is already registered. Please choose another one.' ) ); } // Check the e-mail address if ( $user_email == '' ) { $errors->add( 'empty_email', __( '<strong>ERROR</strong>: Please type your e-mail address.' ) ); } elseif ( ! is_email( $user_email ) ) { $errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The email address isn’t correct.' ) ); $user_email = ''; } elseif ( email_exists( $user_email ) ) { $errors->add( 'email_exists', __( '<strong>ERROR</strong>: This email is already registered, please choose another one.' ) ); } do_action( 'register_post', $sanitized_user_login, $user_email, $errors ); $errors = apply_filters( 'registration_errors', $errors, $sanitized_user_login, $user_email ); if ( $errors->get_error_code() ) return $errors; $user_pass = wp_generate_password( 12, false); $user_id = wp_create_user( $sanitized_user_login, $user_pass, $user_email ); if ( ! $user_id ) { $errors->add( 'registerfail', sprintf( __( '<strong>ERROR</strong>: Couldn’t register you… please contact the <a href="mailto:%s">webmaster</a> !' ), get_option( 'admin_email' ) ) ); return $errors; } update_user_option( $user_id, 'default_password_nag', true, true ); //Set up the Password change nag. wp_new_user_notification( $user_id, $user_pass ); return $user_id; } я так понимаю нужно строку if(!preg_match('/^[a-z0-9_-]{4,15}$/i', $key)) exit('Неверно заполнено поле «Логин»'); применить не к $key а к $sanitized_user_login ? |
liringea, да.
|
Часовой пояс GMT +3, время: 19:09. |