在 SAE 上运行 Laravel 4

本文由游子团队成员、DiliCMS 作者 chekun (a.k.a. @jeongee) 首发于 SAE 官方论坛,现经由游子团队整理校对并重新发布。


When Laravel meets SAE

相信大家或多或少已经了解过目前横扫 PHP 社区的 Laravel 框架了。在2012年以前,我主要使用 CodeIgniter 作为日常开发的核心框架;在了解过 Laravel 3 诸多耳目一新的特性和架构后,我立马被它的优雅、灵活所吸引,自此毅然成为 Laravel 开发者阵营中的一员。关于 Laravel 的各种高大上特性,我在这里不做详谈,感兴趣的可以到 Laravel 官网查看了解。

Sina App Engine(简称SAE)是新浪推出的 PaaS 公有云计算平台,目前 SAE 平台支持 PHP、Python 和 Java 编程语言。既然 SAE 支持 PHP 编程语言,那么,它理论上自然应该支持 Laravel。然而 SAE 云基础架构的一些限制导致我们无法直接、自由的使用原生 Laravel 框架:

  • 本地文件读写:Laravel 通过读写本地文件的方式实现缓存和临时文件(如 manifest)的存取;而 SAE 不支持直接读写本地文件
  • 缓存类:Laravel 没有直接提供 SAE 可直接使用的缓存类。
  • Session类:Laravel 默认的 Session 机制并非采用 PHP 原生 Session 实现;而 SAE 则默认支持 PHP 原生 Session。具体来说:SAE 通过 session_start() 开启一个 Session 会话;而采用了 Symfony Session 的 Laravel,自然继承了其 Session 类会和 SAE 自动 session_start() 产生兼容性问题的特性。
  • 模版引擎:Laravel Blade 模板引擎编译后的临时文件会存放于本地,故依然存在本地文件直接读写的 SAE 兼容性问题。

幸运的是,PHP5 的新特性和 Laravel 强大的扩展能力使得我们可以轻松解决上述问题。本文所附带的开源项目,可以让您的 Laravel 项目优雅的运行于 SAE 平台上。

- 阅读剩余部分 -

SWFupload 2.2.x的XSS漏洞及解决方案

SWFUpload 是一款优秀的 Flash 上传控件,它可以非常好的增强 Web 端程序的用户上传体验。SWFUpload 自由灵活的 JavaScript 接口允许开发者自定义包括 HTML/CSS 在内的几乎所有 UI 样式,被广泛运用在大量站点的上传模块中,如 Youtube 和 WordPress 。

近日,有安全人士爆出 SWFUpload v2.2.x 的XSS 漏洞,此漏洞可能导致严重的类 XSS 安全隐患。由于官方开发近乎停滞,故我们建议在正式项目中使用了此组件的开发者通过如下方式解决本安全隐患(二选一):

1)将 SWFUpload 替换成其他安全的上传组件,如 jQuery File Upload 和游子自行开发的图片上传组件。
2)点击此处下载修正、编译后后的 swfupload.swf 文件,然后替换掉目前你在项目中使用的 swfupload.swf 文件。

修正代码的改动只有一行,就是将危险字符进行简单过滤:

https://gist.github.com/4256196

修正后的完整项目代码,请前往游子 Github 项目查看

类百度文库文档上传、转换和展示功能项目开源代码

游子解决方案致力于通过编写优雅的程序代码来创建更好的互联网应用。无论是我们服务过的客户项目、还是我们自主开发并运营的产品,游子目前所采用的技术框架(如 Laravel、Node.js 和 MySQL等)几乎全部来源于开源软件社区。投之以桃,报之以李。游子希望通过公布并维护一些我们认为有价值的产品来回报整个开源社区,推进开源事业在中国的发展。

今天要给大家介绍的是一款类似百度文库文档展示功能的完整演示项目,其核心功能主要包括:支持用户上传 office word/pdf/txt/html 等多类型文档格式,并自动转换成 swf 格式、最终实现 WEB 端的在线浏览功能。

项目本身可能并不算复杂(?),技术大牛们可能会觉得这仅仅是一系列组件的 mashup。不过截至目前为止,我们尚未发现网络上有完整、公开的转换流程可供研究。于是,在征求过客户和本项目的首席架构 chekun 的同意后,我们将此项目的核心代码开放出来。希望给大家更具体的示例参考。

本方案全程采用开源软件。由游子解决方案团队成员 chekun 开发和维护,遵循 MIT 开源协议。

项目代码: https://github.com/yoozi/swf-docs-generator
项目说明: http://yoozi.github.com/swf-docs-generator

仿新浪微博本地/摄像头图片上传 Flash 组件

在日常 Web 开发过程中,图片的上传和处理一直是屌丝程序员成功逆袭至糕富帅程序员的拦路虎(如果没有这个“拦”字该多好啊亲-_-)。下面所介绍的这款开源 Flash 上传组件,主要就是为了解决图片上传、处理过程中遇到的常见问题,供大家参考和使用。

实现思路

通过 Flash 上传本地图片(或用户拍照后获取摄像头图片)、处理图片(如图片缩放和截取),最后通过 PHP 保存至服务器完成上传。其功能特点和交互流程,与新浪微博的用户头像上传并剪切的体验类似。

功能特性

本 Flash 上传组件主要包含以下功能:

  1. 读取本地图片资源
  2. 读取摄像头
  3. 生成展示用的缩略图
  4. 原图与缩略图一起旋转
  5. 截取原图的一部分生成缩略图
  6. 截取框可移动、放大、缩小
  7. 修改鼠标右键,可加入公司介绍版权说明等信息
  8. 生成缩略图上传到服务器保存成图片(PHP)

下载与演示

项目地址:https://github.io/yangyifeng/takephoto/
演示地址:http://yangyifeng.github.io/takephoto/

本组件由游子解决方案团队成员 Sam 开发和维护,遵循 MIT 协议。