ฉันจะหาเอกสารเกี่ยวกับตัวละครที่ได้รับอนุญาตในชื่อผู้ใช้ได้อย่างไรและเพราะเหตุใด


11

ฉันชอบที่จะสามารถใช้ช่องว่างในชื่อผู้ใช้ แต่ดูเหมือนจะเป็นไปไม่ได้ มีการเขียนใน codex หรือบางแห่งที่อธิบายว่าอนุญาตให้ใช้อักขระใดได้บ้างและทำไมจึงถูก จำกัด ไว้ที่เซตนั้นหรือเป็นแค่ตัวอักษรเท่านั้นและดูดมันขึ้นมา?

หากฉันต้องการให้ผู้ใช้ใช้อย่างอื่นนอกเหนือจากชื่อผู้ใช้ที่ไม่มีช่องว่างตัวเลือกที่แท้จริงของฉันคือปลั๊กอินที่อนุญาตให้ผู้ใช้ลงชื่อเข้าใช้ด้วยที่อยู่อีเมลของพวกเขาแทน แต่ยังคงต้องการชื่อผู้ใช้อัลฟ่าเท่านั้น

โอ้และฉันอยู่ในเว็บไซต์ WPMU / เครือข่าย

คำตอบ:


7

คุณสามารถใช้ช่องว่างในชื่อผู้ใช้ไม่มีปัญหา ผู้ใช้หลายคนใน wordpress.org มีช่องว่างในชื่อผู้ใช้ของพวกเขา

โหมดเข้มงวดอนุญาตเฉพาะอักขระเหล่านี้: a-z0-9<space>_.\-@

อย่างไรก็ตาม WP ไม่ได้เป็นค่าเริ่มต้นเป็นโหมดเข้มงวด

ตอนนี้ไซต์หลายรายการมีข้อ จำกัด ต่างกันและอาจตัดช่องว่างที่นั่น นี่เป็นเพราะชื่อผู้ใช้ถูกใช้เพื่อสร้างบล็อกอิสระและเช่นในการติดตั้งแบบหลายไซต์


เหมาะสมแล้วการติดตั้งหลายอันของฉันจะไม่อนุญาตให้ฉันสร้างผู้ใช้ด้วยช่องว่าง @ หรือ ในชื่อ. ฉันดูฟอร์แมตting.phpและไม่อนุญาตให้ใช้ @ และช่องว่าง แนวคิดใดที่ฉันควรค้นหาเพื่อค้นหาว่าตัวละครเหล่านี้ป้องกันอะไรบ้าง ฉันแค่อยากจะรู้ว่าทำไมพวกเขาถึงได้รับการป้องกัน
Purcell

3
มันอยู่ในฟังก์ชั่น wpmu_validate_user_signup ใน wp-include / ms-functions.php และใช่มันอนุญาตเฉพาะตัวอักษรและตัวเลข เป็นสิ่งที่แน่นอนหลายอย่าง
อ็อตโต

5

ฉันไม่คิดว่ามีเอกสารอย่างเป็นทางการเกี่ยวกับเรื่องนี้ แต่คุณสามารถดูsanitize_userฟังก์ชั่นใน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 );
}

คุณสามารถขอฟังก์ชั่นนั้นและแทนที่พฤติกรรมเริ่มต้นด้วยตัวคุณเอง


ขอบคุณสำหรับการชี้ให้เห็น formatting.php การติดตั้งแบบหลากหลายของฉันจะไม่อนุญาตให้ฉันสร้างผู้ใช้ที่มีช่องว่าง, @ หรือ ในชื่อ. ฉันดูฟอร์แมตting.phpและไม่อนุญาตให้ใช้ @ และช่องว่าง แนวคิดใดที่ฉันควรค้นหาเพื่อค้นหาว่าตัวละครเหล่านี้ป้องกันอะไรบ้าง ฉันแค่อยากจะรู้ว่าทำไมพวกเขาถึงได้รับการป้องกัน
Purcell
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.