Submitted by gouki on 2009, November 28, 9:11 PM
Submitted by gouki on 2009, November 27, 11:27 PM
关于以下内容,我对于数据库那段还真的不知道。。。原来可以通过这样的方式来强制执行我们一直会遗忘的那句话:set names utf8。。。
PHP中文乱码一般是字符集问题,编码主要有下面几个问题。
一.首先是PHP网页的编码
1. php文件本身的编码与网页的编码应匹配
a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。
b. 如果欲使用utf-8编码,那么php要输出头:header(“Content-Type: text/html; charset=utf-8"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用 session就会出问题,可用editplus来保存,在editplus中,工具->参数选择->文件->UTF-8签名,选择总 是删除,再保存就可以去掉BOM信息了。
2. php本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码。
二.PHP与Mysql的数据交互
PHP与数据库的编码应一致
1. 修改mysql配置文件my.ini或my.cnf,mysql最好用utf8编码
2. 在需要做数据库操作的php程序前加mysql_query("set names '编码'");,编码和php编码一致,如果php编码是gb2312那mysql编码就是gb2312,如果是utf-8那mysql编码就是 utf8,这样插入或检索数据时就不会出现乱码了
三.PHP与操作系统相关
Windows和Linux的编码是不一样的,在Windows环境下,调用PHP的函数时参数如果是utf-8编码会出现错误,比如 move_uploaded_file()、filesize()、readfile()等,这些函数在处理上传、下载时经常会用到,调用时可能会出现下 面的错误:
在Linux环境下用gb2312编码虽然不会出现这些错误,但保存后的文件名出现乱码导致无法读取文件,这时可先将参数转换成操作系统识别的编码,编码 转换可用mb_convert_encoding(字符串,新编码,原编码)或iconv(原编码,新编码,字符串),这样处理后保存的文件名就不会出现 乱码,也可以正常读取文件,实现中文名称文件的上传、下载。
其实还有更好的解决方法,彻底与系统脱离,也就不用考虑系统是何编码。可以生成一个只有字母和数字的序列作为文件名,而将原来带有中文的名字保存在数据库 中,这样调用move_uploaded_file()就不会出现问题,下载的时候只需将文件名改为原来带有中文的名字。实现下载的代码如下
$file_type是文件的类型,$file_name是原来的名字,$file_path是保存在服务上文件的地址。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wufongming/archive/2008/11/08/3256186.aspx
Submitted by gouki on 2009, November 26, 4:26 PM
网上找了N多资料,翻阅了大量网站。一些国外虚拟主机对比啥的也都看了一遍。最后,我选择了bluehost
算是盲目中的选择吧?但最主要的可能还是搜索到的一些:bluehost因为不能做成人网站,所以被国内墙的机会比较小。
购买还算比较方便,直接支持信用卡【双币的都支持】。在支付了一年的费用后,走上了国外虚拟主机的路。在人没有出去前,我的网站已 经先我一步到了国外。
cpanel的设置让一开始的我有点头晕 ,但我还是挺过来了。
bluehost默认没有开启ssh,需要你发送一张身份证照片【扫描或者拍摄的都行】给他们就行了。为了防止滥用,我在图片上打上了巨大的水印【ONLY FOR BLUEHOST / ENABLE SSH CLIENT】,所幸,我通过了。(大约10分钟左右就收到开通邮件了,网上很多人说老外不太认中国身份证,很多人提交了也被咔嚓了。)
有了ssh,事情稍微好了一点,但 事实上,管理不了系统设置之类的,也就只能做做普通操作了。用ssh上去wget还是可以的。。
添加域名和绑定域名,我折腾了很久,还好,又搞定了。。。
事情总算有点顺利
Submitted by gouki on 2009, November 25, 11:21 AM
群内突然有人【桔子】提问:
然后自问自答,说这些是他同事写的:
然后说了他自己写的:
最后我也写了两个,一个正则,一个是利用现有函数:
之所以要用str_replace,也是因为桔子说的,以防当中有空格。但事实上,如果出这种题目,应该是不会有空格的吧?
哈哈完事。。。
Submitted by gouki on 2009, November 24, 9:23 AM
thinksns在整合ucenter的时候难度并不大。主要有几个思路,不要错过就行了
1、不要想着把thinkphp框架整合进去,那样只会让你效率大低
2、合理应用thinksns提供的API,在API里面有取得当前登录用户的资料等信息,而且也有一个比较完整的数据库操作类【主要是不需要再调用config等配置了】
3、利用ucenter整合的时候,只能利用thinksns的一个cookie: remembor【开始为了这个我折腾了半天,我一直都打成remember。。。。汗一下先】(由于现在我是在一台机器上试,对于$_SERVER['USER_AGENT']是否一致还没有完全测试。。。)
4、整合的两个重要环节就是同步登录和退出。登录的时候要注意一下,两边的密码机制不一样,第一次同步资料的时候需要注意一下,否则一旦整合就不能使用原来的密码了。
5、同步登录的时候,如果需要强制注册,则必须要调用$api->user_add($data)这样的方法,具体的变量参数可以参考thinksns的lib中的indexAction.class.php ,顺便说一下,它的代码,注册中的隐私,其实没有插数据库。。。。骗子啊
6、起初的时候,我考虑需要读系统配置,就调用了$api->option_get()结果出错,由于ucenter api的出错是不显示的。调试了半天,才发现。原来是option_get()调用的get方法中,居然有一个ts_cache函数,而这个函数却是在api的范围之外,即它是属于thinksns的common方法中,在api中并没有被包含进来。。导致无法执行出错。
其他就没啥了。。至于feed同步啥的,则需要一点点的测试和更新,以同步到thinksns的feed库中。是个劳心劳力的过程。
PS:我会把本文同步到http://www.ucapi.com/wiki/上