半吊子全栈开发者的日常

Blessing Skin Server 0.1 —— 开源 PHP Minecraft 皮肤站

bss upload

很久以前就有想写一个皮肤站的想法了,但是苦于没有时间且 PHP、前端的 coding 都不熟练,所以一直搁置着,当作一个目标。

恰逢前几周稍微有点时间(其实是克服了懒癌),就写了一个皮肤站的原型。PHP + MySQL,表单 POST 数据,基本的登录/注册/上传 功能还是实现了的。但是前端完全没有写,全是 webkit 的默认样式。

不过盼星星盼月亮终于等到了元旦假期(连上周末三天),于是把整个项目重构了一下,并且用鞋拔子写了个稍微能看的页面。

前端页面引用的资源/库均位于根目录下的 /assets/libs,这是不知道从哪里学来的,总之觉得这样挺好的就这样放了(笑)

然后是实现了全站 Ajax,登录/注册 均 POST 请求 check.php 返回 json,加入了 SQL 注入防护(虽然还没有 sqlmap 测试过),加入了基于 IP 的注册数量限制,支持保存 cookie,token 验证自动登录。token 就是使用普通的用于验证的不可逆算法得到(用户名 + MD5 密码 + 盐,MD5 二次加密)。

Ajax 文件上传带 token POST 请求 upload.php,同样返回 json,上次后的文件位于 /uploads。(其实窝觉着这俩可以放一个文件里的)

user.php 为用户页面,本来是想用 php 路由到 /user/admin 等子目录的,但是想想还是算了。因为窝对路由之类的理解并不多,边查边写的话窝也没有那么多时间了。准备放在下一个版本里。

user.php 中使用了 djazz 的 Minecraft Skin Previewer 实现 3D 皮肤预览(就是 skinme 使用的那个),窝将其封装了一下放入了 three.msp.js 中,可以使用类似 MSP.getStatus()MSP.changeSkin() 的接口来访问。

后端就没啥出彩的地方了(话说前端也没有吧),所有使用了数据库连接的操作均封装为函数放在 connect.php 里面。不过感觉这个放根目录不合适就是了。

config.php 中定义了数据库连接信息,站点名称等常量以供调用。这是从 WordPress 那学来的(笑

遗憾的是由于没有时间,后台管理页面还没写,目前只能通过自己管理数据库和文件的方式来管理用户。而且现在的数据表结构也不支持后台管理 qwq

而且前端的 JS 和 CSS 都写得乱糟糟的,CSS 选择器一半是 id 一般是 class,文件关系也没处理好,没有响应式设计,有些地方还用了绝对定位 emotion1 

不过由于时间所限,这些都放到下一个版本吧~


项目开源在 GitHub 上,欢迎 Pull Request~ 在线演示:https://skin.prinzeugen.net/

Minecraft 1.9 快照试玩感想

早就听闻 1.9 战斗更新很坑爹,于是找了个时间体验了一把,版本是 15w50a。(多图注意)

1

首先是存档拥有了一个自己的图标,可以自定义存档文件夹下的 icon.png,默认为第一次进入世界的截图。 进入了世界,首先迫不及待的试了一下传说中的双持(默认按 F 交换主副手的物品):

2

哇塞,帅爆了耶,二刀流有木有!

然而武器(除了弓)都只能在主手用 qwq,副手放放火把之类的还好。副手有东西时,鼠标右键就是使用副手的物品。

20151231175748

但是,有个坑爹的地方。场景模拟:

你兴高采烈的双持稿子和火把下矿了,想着 “终于可以在原版体验采矿钻头插火把的快感辣~”,于是在地下碰到了姜丝围攻。你想着,哎呀,还是先垫垫高比较好打,于是对着地面一跳一右键。。然后插上了火把(摔

当然,你也可能会想吃东西,吃完发现满地火把。。(笑

所以说还是要适应,感觉并不是特有用的更新。 然后就是试验传说中的 战斗更新 了: 然后。。。

4

OH, WHAT THE FUUUUUCK !!!

> READ MORE...

Hello World !

欢迎使用 WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!


说实话我开始写博客后真正的「第一篇文章」早就不知道啥时候被我不小心删掉了,这篇文章只是在我后来回想起大概的日期,去 WordPress 源码里找出默认「Hello World」文章的内容后拼造出的文章而已。

不过不管怎么说这也是本博客的第一篇文章(虽然是假的),值得庆贺。鼓掌!


小提示:2016 年以前的文章(黑历史)请在「归档」页面中查看。