thaifeed โพสต์ 2012-2-9 11:51:31

สมัครชื่อภาษาไทยให้ยาวๆๆ ใน Discuz X2

แก้ไขครั้งสุดท้ายโดย thaifeed เมื่อ 2012-2-9 11:53

พอดีผมเพิ่งลองใช้ Discuz นะครับ มีอะไรผิดพลาดก็ขออภัยล่วงหน้าด้วยนะครับ

พอดีผมอยากทำให้สมัครชื่อภาษาไทยยาว ๆ ได้ ก็เลยลองหาข้อมูลจากบอร์ดนี้ ก็ได้ตามลิ้งค์ด้านล่าง

http://forum.discuzthai.com/forum.php?mod=viewthread&tid=21719&page=1

http://forum.discuzthai.com/forum.php?mod=viewthread&tid=26940&page=1

ลองดูแล้วก็ยังไม่ได้ผลเพราะว่ามันใช้กับ 1.5 ก็เลยลอง งม ๆ เอง ก็จะได้การแก้ไขดังต่อไปนี้นะครับ


1. source/class/class_member.php

ค้นหา >>} elseif($usernamelen > 15) {แก้เลข15เป็น ตัวเลขความยาวที่ต้องการเช่น 200


2. source/module/forum/forum_ajax.php

ค้นหา >>elseif($usernamelen > 15)แก้เลข15เป็น ตัวเลขความยาวที่ต้องการเช่น 200


3. static/js/register.js

ค้นหา >>if(unlen < 3 || unlen > 15) {แก้เลข15เป็น ตัวเลขความยาวที่ต้องการเช่น 200


4. template/default/member/register.htm

ค้นหา >>maxlength="15"แก้เลข15เป็น ตัวเลขความยาวที่ต้องการเช่น 200


5. uc_server/model/user.php
    uc_client/model/user.php

ค้นหา >>if($len > 15 || $len < 3 || แก้เลข15เป็น ตัวเลขความยาวที่ต้องการเช่น 200


6. แก้ไขตัวเลข username ในฐานข้อมูล pre_common_members และ pre_ucenter_members   

แก้เลข15เป็น ตัวเลขความยาวที่ต้องการเช่น 200


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

bonparadorn โพสต์ 2012-5-6 17:57:58

แก้ไขครั้งสุดท้าย 2012-5-6 18:15 โดย bonparadorn

แก้ไขครั้งสุดท้าย 2012-5-6 18:05 โดย bonparadorn

แก้ไขครั้งสุดท้าย 2012-5-6 18:04 โดย bonparadorn

ความยาว 15 เหมาะแล้วครับ แต่ปัญหาคือภาษาไทย utf-8 ใช้พื้นที่ 3ไบท์ แม้ฟังชั่น function dstrlen($str) ของDiscuz
จะช่วยแล้ว แต่ผมอ่านๆดูแล้วเป็นการช่วยแบบจีน ควรเปลี่ยนฟังชั่นนี้จาก strlen($string) เป็น
mb_strlen($string, 'utf-8')
และเปลี่ยนเงื่อนไขอักษรบนล่างใหม่ของเดิมเป็นเงื่อนไขแบบจีน เป็น
if(!( $ascii == 209 ||($ascii >= 212 && $ascii <= 218 ) || ($ascii >= 231 && $ascii <= 238 )))
.....
...
บู้อี้ << จะมีค่าแค่2        function strlenth($str)
    {
       $arr = str_split($str);
       $count = 0;
          foreach($arr as $val)
          {
                $ascii = ord($val);
                if(!( $ascii == 209 ||($ascii >= 212 && $ascii <= 218 ) || ($ascii >= 231 && $ascii <= 238 )))
                        $count += 1;
          }
          return $count;
    }มันไปติดที่ผมเขียน java ไม่เป็น ไม่งั้นคงจะช่วยได้มากกว่านี้ครับ

เวิคที่สุด ให้ input รับมา 15 อักษร แล้วแก้ไขฟังชั้นข้างในเป็น 45 ให้หมดครับ ต้องแก้ดาต้าเบสด้วย char(45) เพื่อสละบนล่าง

lahu โพสต์ 2012-2-9 17:20:39

จริงหรอครับขอบคุณมาก

seedmix โพสต์ 2012-6-4 18:31:43

ขอบคุณครับ
หน้า: [1]
ดูในรูปแบบกติ: สมัครชื่อภาษาไทยให้ยาวๆๆ ใน Discuz X2