Tôi có thể tìm tài liệu về những ký tự nào được phép trong tên người dùng và tại sao?


11

Tôi rất thích có thể sử dụng khoảng trắng trong tên người dùng, nhưng điều này dường như không thể. Có một bản ghi trong bộ mã hoặc một nơi nào đó giải thích những ký tự nào được phép và tại sao nó bị giới hạn trong tập hợp đó hay nó chỉ là bảng chữ cái và hút nó lên?

Nếu tôi muốn người dùng sử dụng một cái gì đó ngoài tên người dùng không có khoảng trắng, thì tùy chọn thực sự duy nhất của tôi là một plugin cho phép người dùng đăng nhập bằng địa chỉ email của họ, nhưng vẫn yêu cầu tên người dùng chỉ alpha khi tạo tài khoản?

Ồ, và tôi đang ở trên một trang web WPMU / mạng.

Câu trả lời:


7

Bạn có thể sử dụng khoảng trắng trong tên người dùng, không có vấn đề. Một số người dùng trên wordpress.org có khoảng trắng trong tên người dùng của họ.

Chế độ nghiêm ngặt chỉ cho phép các ký tự này: a-z0-9<space>_.\-@

Tuy nhiên WP không mặc định ở chế độ nghiêm ngặt.

Bây giờ, multisite có những hạn chế khác nhau, và nó có thể tước bỏ không gian ở đó. Điều này là do tên người dùng được sử dụng để tạo các blog độc lập và như vậy trên các cài đặt nhiều trang.


Điều này có nghĩa, nhưng cài đặt đa năng của tôi sẽ không cho phép tôi tạo người dùng có dấu cách, @ hoặc. trong tên Tôi đã xem định dạng.php và nó dường như cho phép @. và không gian. Bất kỳ ý tưởng về nơi tôi nên tìm kiếm để tìm ra những gì đang ngăn chặn các nhân vật này? Tôi chỉ muốn biết tại sao chúng bị ngăn chặn.
Purcell

3
Đó là trong hàm wpmu_validate_user_signup trong wp-gồm / ms-tests.php, và vâng, nó chỉ cho phép các chữ cái và số. Chắc chắn là một điều nhiều.
Otto

5

Tôi không nghĩ có bất kỳ tài liệu chính thức nào về điều đó, nhưng bạn có thể xem sanitize_userchức năng trong wp-includes/formatting.php:

function sanitize_user( $username, $strict = false ) {
    $raw_username = $username;
    $username = wp_strip_all_tags( $username );
    $username = remove_accents( $username );
    // Kill octets
    $username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username );
    $username = preg_replace( '/&.+?;/', '', $username ); // Kill entities

    // If strict, reduce to ASCII for max portability.
    if ( $strict )
        $username = preg_replace( '|[^a-z0-9 _.\-@]|i', '', $username );

    $username = trim( $username );
    // Consolidate contiguous whitespace
    $username = preg_replace( '|\s+|', ' ', $username );

    return apply_filters( 'sanitize_user', $username, $raw_username, $strict );
}

Bạn có thể móc vào chức năng đó và ghi đè hành vi mặc định bằng chính hành vi của bạn.


Cảm ơn đã chỉ ra định dạng.php. Đa cài đặt của tôi sẽ không cho phép tôi tạo người dùng có dấu cách, @ hoặc. trong tên Tôi đã xem định dạng.php và nó dường như cho phép @. và không gian. Bất kỳ ý tưởng về nơi tôi nên tìm kiếm để tìm ra những gì đang ngăn chặn các nhân vật này? Tôi chỉ muốn biết tại sao chúng bị ngăn chặn.
Purcell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.