• 登录
  • 关于我们
  • 首页

NinJa911 Blog

记录我的生活点点滴滴

  • 首页
  • GoLang
  • 生活琐碎
  • PHP之路
  • 设计之路
  • 关注网络
  • 应用开发
  • 服务器运维
  • 麻子相册

深度挖掘Ucenter用户表长度规则

分类:PHP之路 评论:0 浏览: By 张麻子 @2013-05-25 23:45客户端:PC浏览器

因为公司项目需要整合Discuz Ucenter用户中心,并依托Ucenter为基础,方便以后其他应用中的用户一致性。在最近几天开发用户这块地方的时候,一不小心就深入到Ucenter里了,今天并分享挖掘出来的结论,也许对你们有帮助。主要解决各个应用之间对用户名在不同编码、语言开发中的长度Length限制做了一次深入的挖掘。


首先我们复习一下“字符”这个玩意儿。

在Javascript中,不管utf-8还是gbk,一个汉字总是等于2个字符的,不过全角的情况比较特殊,有些是1.5个字符。

在PHP中,utf-8编码情况下,一个汉字是等于3个字符;而gbk编码下,一个汉字是等于2个字符。


Ucenter的members表中的username字段是设计为VARCHAR(60),其实是有原因的。我慢慢道来。

要成为Ucenter一个会员,其中一个规则就是用户名必须在 3 ~ 15 之间,我没有说单位,是马上要解释。 3 ~ 15可以是3至15个字符,也可以理解为3-15个汉字,Ucenter不管你汉字还是字母数字,反正按个数,必须在3~15之间(包括3和15),那么我们来换算一下PHP后,在utf-8编码情况下,15个汉字是45个字符;gbk编码下是30个字符,这下你就会明白为什么用户表member字段要设置为VARCHAR(60)了吧,当然可能60长度有点多余的,那是因为VARCHAR属性决定了可以扩展的,至少你不能设计为长度小于30吧。


根据Ucenter的设计规则,那么我们前台判断用户名长度的时候,利用Javascript就要去做4-30个字符限制判断。


附上utf-8下的php判断代码一则

        if (Check::userName($username, 2, 15, 'CHINESE2')) {
            $arr_return['error'] = -10;
            $arr_return['message'] = '用户名限汉字、数字、字母或下划线,且不能以数字和下划线开头';
            $this->jsonp_echo($arr_return);
        }

本文地址:http://blog.ninja911.com/blog-show-blog_id-62.html

除非注明,本站博文或媒介均为原创,转载请注明出处,欢迎转载。

tags: #Discuz #Ucenter #挖掘 #深度 #用户 #编码 #规则 #长度
评论
留言
引用:
1

关于我

网名:ninja911

小名:张麻子

擅长:网页设计、PHP编程、DIV+CSS、Javascript、JQuery、Ajax、SEO、AAuto、Python

Email:ninja911@qq.com

职业:PHP工程师

现居:四川省成都市

RSS订阅

标签
安装 AAuto PHP 自动 Windows8 Google flash css nbcompressor 解决 红包 Windows njcms 博客 Ecshop 解决方案 模块 百度 uploadify IE Linux Android 快手 工具 电商 网站 支持 浏览器 JetBrains 注册机 注册码 Laravel Go 脚本 blog 点点
日历
存档
  • 2015-11(3)
  • 2015-06(1)
  • 2015-05(1)
  • 2015-03(2)
  • 2015-01(2)
  • 2014-07(4)
  • 2014-06(3)
  • 2014-05(1)
  • 2014-04(3)
  • 2014-03(1)
  • 2014-01(8)
  • 2013-05(2)
  • 2013-04(8)
  • 2013-02(2)
  • 2013-01(3)
  • 2012-12(1)
  • 2012-11(6)
  • 2012-10(13)
  • 2012-09(4)
  • 2012-08(24)
友情链接
  • Lincoo
  • jalena's Blog
  • AAuto快手官网
  • 花与剑 Blog
  • 时空镜像

©2011 - Blog.NinJa911.COM 保留所有权利

蜀ICP备11022085号-5    Powered By NJCMS