手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

用 PHP 生成 JavaScript 字符串

闲来无事,到coolcode.cn上去闲逛。发现了一些比较旧的文章,以前也都看过,但,那时候没有开博,所以也就没有记录。如今博客也开了,coolcode.cn估计要成为我搜刮的对象了。

coolcode.cn的作者是andot,PHPRPC的作者,我06年年中(应该没记错)就使用了这个软件,同年放弃使用xajax,当然,现在我更多的使用jquery来操作ajax,但PHPRPC的功能不完全局限于ajax,我这里就不详谈了。先谈这篇文章。。。

无耻的分隔线:


原来,在从 PHP 中直接传递字符串给 JavaScript 时,直接用了 addcslashes,如果传递的是带有 utf-8 编码汉字的,就用 "\0..\037\042\134",如果纯 ascii 范围内的字符串,就用 "\0..\037\042\134\177..\377"。但是今天在写加密程序时发现,发现程序有时行,有时不行。后来发现原来是 \v \a 搞的。addcslashes 会把 \007..\015(八进制) 转义成 \a\b\t\n\v\f\r,而其中 \a 这个 IE 和 Firefox 都不认识,\v 这个 Firefox 认识,IE 不认识。所以我写了下面这个函数,用它可以就可以转化成 JavaScript/JScript 所认识的字符串了(其中 $flag 表示是否转义 ascii 码大于 127 的字符)。感谢五帝同学的帮助!

PHP代码
  1. /* @author andot & wudi */  
  2. function addjsslashes($str$flag = true)  
  3. {  
  4.     if ($flag) {  
  5.         $str = addcslashes($str"\0..\006\010..\012\014..\037\042\047\134\177..\377");   
  6.     }   
  7.     else {   
  8.         $str = addcslashes($str"\0..\006\010..\012\014..\037\042\047\134");   
  9.     }   
  10.     return str_replace(  
  11.                 array(chr(7), chr(11)),   
  12.                 array('\007''\013'),   
  13.                 $str  
  14.             );   
  15. }   

Tags: php, javascript, 进制转换

MySQL 5 中 blob 类型字段的插入[转]

单位用的数据库一直是MYSQL4,这有历史原因,这里就不讨论了。虽然一直想升为MYSQL5,但谁也不能预期升上来之后会有什么问题。也就导致一直不敢升级,但随着数据库的压力越来越大,以及新版本的功能越来越有意义的时候,升级这种事情就被提上了日程,正好看到这篇文章,估计以后可能会遇到同样的问题,因此先记下来,同时也可以给其他朋友一个解决方法。

原文作者:andot,网址:http://www.coolcode.cn/show-155-1.html

» 阅读全文

Tags: mysql, database, blob, insert

PHP 序列化(serialize)格式详解

PHP 序列化(serialize)格式详解

  1. 前言
  2. 概述
  3. NULL 和标量类型的序列化
  4. 简单复合类型的序列化
  5. 嵌套复合类型的序列化
  6. 自定义对象序列化
  7. Unicode 字符串的序列化
  8. 参考文献

原文来自Coolcode.cn,作者andot

» 阅读全文

Tags: php tutorials, serialize

Base64转换:AQAB=65537,你知道为什么吗?[转]

什么是Base64?

按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列 的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)

为什么要使用Base64?

在设计这个编码的时候,我想设计人员最主要考虑了3个问题:
1.是否加密?
2.加密算法复杂程度和效率
3.如何处理传输?

    加密是肯定的,但是加密的目的不是让用户发送非常安全的Email。这种加密方式主要就是“防君子不防小人”。即达到一眼望去完全看不出内容即可。
基 于这个目的加密算法的复杂程度和效率也就不能太大和太低。和上一个理由类似,MIME协议等用于发送Email的协议解决的是如何收发Email,而并不 是如何安全的收发Email。因此算法的复杂程度要小,效率要高,否则因为发送Email而大量占用资源,路就有点走歪了。

    但 是,如果是基于以上两点,那么我们使用最简单的恺撒法即可,为什么Base64看起来要比恺撒法复杂呢?这是因为在Email的传送过程中,由于历史原 因,Email只被允许传送ASCII字符,即一个8位字节的低7位。因此,如果您发送了一封带有非ASCII字符(即字节的最高位是1)的Email通 过有“历史问题”的网关时就可能会出现问题。网关可能会把最高位置为0!很明显,问题就这样产生了!因此,为了能够正常的传送Email,这个问题就必须 考虑!所以,单单靠改变字母的位置的恺撒之类的方案也就不行了。关于这一点可以参考RFC2046。
基于以上的一些主要原因产生了Base64编码。

» 阅读全文

Tags: base64, 算法

关于不能回复的问题

自从我用上了http_rewrite之后,好象登录啥的都有点问题。但应该不完全是这个问题。
FF3好象对网页有一定的缓存功能,因此在回复的时候,好象会一直提示:验证码不正确。这个问题我暂时不知道到底是FF3的问题呢,还是啥问题。

反正,我用FF3只要是打开有验证码的网站,总归是要登录个4、5次。为了方便大家回复,我目前将回复需要验证码这个功能关掉了。(评论审核嘛。。。还是先开着,等过完节再关。)

 

Tags: 回复, 失败