如何偷懒地用 PHP 搭建一个班级网站 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ArrayZoneYour
V2EX    PHP

如何偷懒地用 PHP 搭建一个班级网站

  •  
  •   ArrayZoneYour 2016-09-19 23:26:13 +08:00 5916 次点击
    这是一个创建于 3321 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我叫李宜东,是一名华中科技大学的大二学生,一名网站开发的萌新,在大一上半学期,就想做一个我们班级专属的网站,方便同学们(方便我这个学委偷懒)。
    下面放出我的网站信息架构、技术组合和从一个小白成长到现在一个小小工作室负责人的一些经验分享。

    当前网站信息架构

    网站信息架构

    网站运行环境及技术组合

    技术组合

    注:左侧为现在的技术组合,右侧为未来可能选择的组合

    腾讯云上环境的搭建和代码托管:

    经验分享

    从一个大一小白开始,我是如何在不到一年的时间从前端到后端搭建起自己的网站呢,又为何选择这个技术组合,踩过什么坑呢?

    学习及开发经验

    • 利用网上平台,慕课网,实验楼,极客学院等等许多免费的学习平台都是很好的学习途径。
    • 会用插件,多 Google , StarOverFlow 上有很多问题的解答
    • 最重要的还是保持对编程的热情,做编程会占用你大量的时间,如果没有兴趣是很难坚持下来的,多做点自己想做的,往往可以带来学习的动力。
    • ……

    如何偷懒

    • 环境配置篇:一键化安装,注意留存或收藏环境配置的文档,开发环境更新做好备份。
    • 团队协作篇:使用团队协作工具如 GITHUB ,良好的版本控制和工作流会减少冲突的代价,重要的是别人的代码不乱改:)
    • 轮子篇:合理利用现有的开源组件而不是一味造轮子,基于模板 /框架的开发会迅速很多。
    • 重构、封装篇:不要老想着重写代码,可以尝试将已有的服务封装为服务,在不改动底层的情况下进行开发:)
    • 编辑器篇:好的编辑器的代码补全,快捷键可以省不少时间。

    选择当前技术组合的原因:

    • 前端的变化:现在 HTML5 和 CSS3 使用越来越广,同时出于这学期响应式设计的需要,前端从最初的 HTML,CSS,Javascript 转向了 HTML5,CSS3 和 jQuery ,也开始使用更多的插件。
    • 后端语言及框架选择:在性能要求不高的前提下, php 无需编译,学习成本也比较低,容易上手,但是也因为这个原因,所以需要使用框架来使项目结构和编码规范更清晰一些,而 ThinkPHP 作为流行,文档较完善的国内 PHP 框架被我作为首选。
    • 数据库选择 MySQL 的原因: PHP 的良好支持, phpmyadmin ,开源免费. 最后由于一些校内网站数据的收集和四六级成绩的查询使用了 Python 来做网络爬虫
    • 服务器的选择:腾讯云学生服务器 1 元支持 : ),访问快,稳定性比较好

    技术上踩过的坑:

    1.最初使用 MVC 框架时,没有模型的概念,把数据库操作也写在了控制器,维护、复用和扩展都很麻烦。 2.数据库最初设计没有考虑扩展性,最近数据库向高版本迁移时懒得导出 sql ,复制了 data 目录到高版本 MySQL,然后数据异常,至今个人论坛还没来得及恢复数据。 3.最初密码设计只做了简单的 md5 加密,导致现在也没能加字符 md5 。 4.开发文档和项目文档的编写,有一天,突然翻到之前的文档,发现我写的代码已经偏离最初设计(软件课设作业:学生管理系统),成了班级网站:), mark :更新日志

    网站截图:

    首页

    首页

    学生登陆页面

    学生登陆页面

    个人信息页

    个人信息页

    部门招新

    部门招新 官网地址链接

    结语

    这样,我上学期在一元服务器上折腾出了班级网站,这学期,我想将全站做成响应式网站,做出更多方便同学的功能。最后,感谢腾讯云给了同学体验云服务的机会,也希望其他同学也可以在云上做出自己想要的网站 /App 。

    41 条回复    2016-09-21 14:43:10 +08:00
    webcjz
        1
    webcjz  
       2016-09-19 23:57:01 +08:00   1
    支持,就是要有颗折腾的心
    qfdk
        2
    qfdk  
    PRO
       2016-09-20 02:03:46 +08:00
    好复杂- -其实把你就用 wordpress 就好了 管理界面也有了 自己设计下前端,然后 bbs 找个 dz 弄上 同学入口那里似乎要自己写一些逻辑了,基本就是CRUD 课件上传下载还是百度云,以免服务器悲剧。统一购书基本就是insert语句把。thinkphp玩儿的不多。
    就是折腾的感觉,时间 快的话一周吧。界面写起来可能麻烦一点儿。
    ll3027
        3
    ll3027  
       2016-09-20 02:17:08 +08:00
    用建站工具就好。
    ArrayZoneYour
        4
    ArrayZoneYour  
    OP
       2016-09-20 02:43:09 +08:00
    @ll3027 @qfdk 其实偷懒应该加引号, 233333 ,写这个其实就是练习一下框架:),用建站工具, dz 就没意思了,也就不会学这么多技术了:)
    qfdk
        5
    qfdk  
    PRO
       2016-09-20 03:36:58 +08:00
    @ArrayZoneYour upupw 这是什么鬼? C:\amp\UPUPW_AP7.0\htdocs\ 手动斜眼
    pyufftj
        6
    pyufftj  
       2016-09-20 07:00:44 +08:00   1
    不错,同华科的来顶你一下。
    ArrayZoneYour
        7
    ArrayZoneYour  
    OP
       2016-09-20 07:49:30 +08:00 via Android
    @qfdk PHP 环境集成包呐,你这个路径不就是解压之后的默认网站目录嘛(°°〃)手动呆滞+1s
    popu111
        8
    popu111  
       2016-09-20 07:53:45 +08:00 via Android
    真偷懒方式:不做网站, QQ 群就够了,同时具有比较好的小白亲和度
    ArrayZoneYour
        9
    ArrayZoneYour  
    OP
       2016-09-20 08:00:35 +08:00 via Android
    @popu111 其实我们班有一个 QQ 群就是我专门发通知的,全员禁言~
    huntererer
        10
    huntererer  
       2016-09-20 08:09:47 +08:00   1
    哈,大三前端狗表示很佩服啊
    现在的学弟们几乎人人都是全栈了(可怕
    一点建议哈,前端可以再做好看点,起码中文字体换一换。其实大面积用 boostrap 的样式就可以
    herozzm
        11
    herozzm  
       2016-09-20 08:15:01 +08:00 via Android
    说了这么多,网站已经做出了了
    zhxhwyzh14
        12
    zhxhwyzh14  
       2016-09-20 08:16:20 +08:00
    QQ 群足以,而且干嘛禁言,,,大家聊天多好
    Baymaxbowen
        13
    Baymaxbowen  
       2016-09-20 08:20:23 +08:00 via Android
    @zhxhwyzh14 会有人各种斗图,聊天刷屏啊,然后就看不到通知了
    ArrayZoneYour
        14
    ArrayZoneYour  
    OP
       2016-09-20 08:21:02 +08:00 via Android
    @zhxhwyzh14 有专门用来水的群的, orz
    ArrayZoneYour
        15
    ArrayZoneYour  
    OP
       2016-09-20 08:22:13 +08:00 via Android
    @huntererer 嗯嗯,谢谢学长的建议(*^ω^*)
    luili
        16
    luili  
       2016-09-20 08:43:59 +08:00
    大二学生 可以了 加油
    JaHIY
        17
    JaHIY  
       2016-09-20 08:52:36 +08:00
    密码哈希, php 不是有专门的函数么?不过,我一般用 bcrypt (
    jandan
        18
    jandan  
       2016-09-20 09:04:24 +08:00
    图真慢啊
    30CURRY30
        19
    30CURRY30  
       2016-09-20 09:09:00 +08:00
    鼓励一下
    YORYOR
        20
    YORYOR  
       2016-09-20 09:25:17 +08:00
    小学弟 可以的
    qcloud
        21
    qcloud  
       2016-09-20 09:26:13 +08:00
    upupw 环境
    ArrayZoneYour
        22
    ArrayZoneYour  
    OP
       2016-09-20 09:42:52 +08:00
    @JaHIY 就是当时没多想挖的坑啊:(
    @jandan 照片死活传不到 imgur 上,一气之下直接在自己服务器建立目录放图片了(这是不是挖坑
    @luili @30CURRY30 @YORYOR 谢谢(*^ω^*)
    cosgbgas
        23
    cosgbgas  
       2016-09-20 09:52:13 +08:00
    这个主要是你自己练手吧。论效率和 QQ 群没法比。我上大学的时候,班里三个 QQ 群 闲聊群有老师的,闲聊群没老师的。事务群,除了管理员不说话的,用来即时通知各种事情。
    somnus
        24
    somnus  
       2016-09-20 09:56:48 +08:00   1
    支持 良好的开端是成功的一半
    chuhemiao
        25
    chuhemiao  
       2016-09-20 09:57:30 +08:00
    能用到 redis 。。。
    ArrayZoneYour
        26
    ArrayZoneYour  
    OP
       2016-09-20 10:11:16 +08:00
    @chuhemiao 因为缓存数据库没玩过嘛:)
    @cosgbgas 是呐,做网站还是功能更重要一些,即时通讯效率肯定没法和 QQ 比:(
    roychan
        27
    roychan  
       2016-09-20 10:21:35 +08:00   1
    支持楼主

    自己大二的时候做了个这: https://www.coursebench.net/
    不过后来烂尾了。。
    shyling
        28
    shyling  
       2016-09-20 10:28:29 +08:00 via iPhone
    staroverflow...
    zangbob
        29
    zangbob  
       2016-09-20 11:26:29 +08:00
    感觉装个 discuz 不就可以了吗?
    ArrayZoneYour
        30
    ArrayZoneYour  
    OP
       2016-09-20 11:28:22 +08:00 via Android
    @shyling Stack(我错了
    Alias4ck
        31
    Alias4ck  
       2016-09-20 11:49:58 +08:00
    网站图片加载略慢
    ArrayZoneYour
        32
    ArrayZoneYour  
    OP
       2016-09-20 11:57:52 +08:00
    @Alias4ck 我没有做图片压缩的锅(我去压缩一下
    cncqw
        33
    cncqw  
       2016-09-20 13:42:13 +08:00
    楼主对工作的态度很认真,值得肯定,其他的看看就行了
    huage
        34
    huage  
       2016-09-20 14:18:48 +08:00
    QQ 群+wecenter 或者 discuz ,足够。
    当然如果你想自己完全开发也是值得肯定的,你有时间去折腾的话。
    good758
        35
    good758  
       2016-09-20 14:24:05 +08:00
    这种要的是项目经验
    lan894734188
        36
    lan894734188  
       2016-09-20 15:04:06 +08:00 via Android
    这又是个比较大的架构了 用原生撸咯
    ibufu
        37
    ibufu  
       2016-09-20 19:40:56 +08:00
    略丑
    connection
        38
    connection  
       2016-09-20 23:40:57 +08:00
    tp 改成 ci 估计开发还得快一些
    okudayukiko0
        39
    okudayukiko0  
       2016-09-21 00:46:08 +08:00
    直接 WorePress 完事 ..
    此外这等工程用不着 Redis ...大不了就 Tokyo Cabinet,MongoDB , Neo4J ...
    gladuo
        40
    gladuo  
       2016-09-21 01:47:09 +08:00   1
    文章很『学校』。。。
    不过看起来已经干了蛮多事情了,鼓励一下
    x4storm
        41
    x4storm  
       2016-09-21 14:43:10 +08:00
    UI 设计落后两个时代,可以去扒一扒好看网站的样式
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1335 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 16:54 PVG 00:54 LAX 09:54 JFK 12:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86