LOVEME96
LOVEME96 (学号:56)
等级:LV2 经验值:486

爱编程,更爱w3cschool!

TA的能力评估:37分

TA的书签

暂时没有书签

TA的提问

4
回答

使用Python,flask处理后端。 每次在本地写好代码,push 到github,ssh 到服务器,pull下来代码,运行测试,感觉很不方便,有没有方法什么可以在本地测试的? 可不可以有方法实现在本地直接输入要进行测试的信息,像web开发一样,写好网页在本地运行,输入需要post的请求,看返回结果是否正确。 求大神指导~

查看详情
2016-10-24 09:37:34 浏览(2860)
7
回答

日期选择器

请教大神像上图这种的日期选择器应该怎么写?

查看详情
2016-10-24 09:32:52 浏览(4063)
5
回答

php一般用什么方法判断文件或目录是否存在?

查看详情
2016-10-21 10:58:30 浏览(1567)
7
回答

新手求教:二维数组中一般会有多个key,如果我们要获得指定key的值,应该怎么做?

查看详情
2016-10-21 10:40:19 浏览(4510)

TA的回答

1
赞同

防止重复提交表单的方法有很多,包括数据库判断,js验证,cookies验证及session验证等,具体使用方法如下:

  1. 使用JS让按钮在点击一次后禁用(disable)。采用这种方法可以防止多次点击的发生,实现方式较简单。 缺点是若客户端禁止JavaScript脚本,则失效。

  2. 在提交成功后执行页面重定向(redirect)。转到提交成功信息页面。 特点:避免F5重复提交,消除浏览器前进和后退按钮可导致的同样问题。

  3. 表单隐藏域中存放session(表单被请求时生成的标记)。采用此方法在接收表单数据后,检查此标志值是否存在,先进行删除,然后处理数据; 若不存在,说明已提交过,忽略本次提交。

/*
//服务端生成随机数存入session, 分配至表单页
$data['sess_id'] = $_SESSION['sid'] = mt_rand(1000, 9999);
$this->load->view('form', $data);

//表单页隐藏域存放此session值
查看详情
2016-10-21 10:48:51 回复(0)
3
赞同

Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无法存储了。

这个问题的解决方法有三个:

1、使用utf8mb4字符集

如果你的mysql版本>=5.5.3,你大可直接将utf8直接升级为utf8mb4字符集

这种4字节的utf8编码可完美兼容旧的3字节utf8字符集,并且可以直接存储emoji表情,是最好的解决方案 至于字节增大带来的性能损耗,我看过一些评测,几乎是可以忽略不计的

2、使用Base64编码

如果你因为某些原因无法使用utf8mb4的话,你还可以使用base64来曲线救国

使用例如base64_encode之类的函数编码过后的emoji可以直接存储在utf8字节集的数据表中,取出时decode一下即可

3、干掉emoji表情

emoji表情是个麻烦的东西,即使你能存储,也不一定能完美显示。 在iOS以外的平台上,例如PC或者android。如果你需要显示emoji,就得准备一大堆emoji图片并使用第三方前端类库才行。即便如此,还是可能因为emoji图片不够全而出现无法显示的情况

在大多数业务场景下,emoji也不是非要不可的。我们可以适当地考虑干掉它,节约各种成本 经过一番苦苦的google,终于找到靠谱能用的代码:

// 过滤掉emoji表情
function filterEmoji($str)
{  
    $str = preg_replace_callback( 
              '/./u',
               function (array $match) {          
                     return strlen($match[0]) >= 4 ? '' : $match[0];
               },           
               $str);     

     return $str;
 }
?>

基本思想就是遍历字符串中的每个字符,如果该字符的长度为4个字节,就将其删除。

查看详情
2016-10-21 10:51:54 回复(0)
二维码
建议反馈
二维码