php保存emoji表情字符至mysql

这里只对保存到mysql中进行说明

Mysql版本要求:5.5.3以上,硬性要求,如若不是,请忽略下文。

emoji表情为四字节字符,直接保存写入数据库会报错或乱码。网上有各种不靠谱,改mysql默认编码、改数据库编码种种。。。

这里明确告诉各位看官,最小设置,只需要设置两项:

1、对应表相应字段排序(COLLATE)设置为utf8mb4

2、连接数据库编码(charset)设置为utf8mb4

关于第二步注意:

1、如果以前编码为:utf8,请放心修改,utf8为utf8mb4子集,无缝过度

2、php中设置编码为utf8mb4有个小坑,如果是采用Mysqli连接数据库,并且是通过mysqli::set_charset方法设置编码,是无法起作用的,只能通过query执行“SET NAMES utf8mb4”来达到目的

3、如果是通过PDO连接mysql,则通过设置连接参数达到设置编码目的:

“options” => array(
PDO::MYSQL_ATTR_INIT_COMMAND => ‘SET NAMES utf8mb4’
)

jQuery事件重复绑定解决

原代码如下:

2016-08-30_17-16-02

“bindBusyEvent”为弹出层打开后绑定事件,会重复调用,主观认为只会绑定一次,实际是累加,无图无真相,上图:

2016-08-30_17-16-57

如图所示,事件绑定累加,会导致重复执行。解决方法如下:

2016-08-30_17-23-38

事件换成通过“on”绑定,执行完毕通过“off”移除掉绑定,“off”为jQuery1.7.2新增的方法

补充

有童鞋说可以通过“unbind”解决这个问题,网上也有很多资料都是通过“unbind”解决的,确实可以,只是“unbind”在jQuery3.0中就被遗弃了,为了向后看,所以还是通过off搞定。

用“off”的另外的一种写法:.off(‘click’).on(‘click’…

jQuery还支持“one”绑定事件,只执行一次

总结

本文其实是在讲通过“on”绑定的事件可以通过“off”移除

本文场景中的例子,终极解决办法应该是把绑定写到外面,不重复执行绑定。。。

 

$_SERVER[‘SERVER_PORT’]关于php5.2一个bug

链接在这:phpbug

服务器环境:CentOs + php5.2.13
问题:项目里边$_SERVER[‘SERVER_PORT’]获取到的端口不对

我也遇到同种情况了,我的apache端口已经修改为85
在phpinfo里看到的,$_SERVER[‘SERVER_PORT’]是85,对的。
在项目里边获取到的,就是80。也正好项目里是用到了apache的url重写

我是为了获取当前url的路径

<?php
 
//折中办法
$protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? 'https' : 'http';
$host = !empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];
$url = $protocol .'://'. $host . $_SERVER['REQUEST_URI'];