[关闭]
@dooy 2022-09-12T00:23:46.000000Z 字数 3574 阅读 228

PHP框架DR

PHP DR 文档


修改日志

日期 说明
2017-05-10 刚刚建立初步的思想,把答题的框架设计出来
2017-10-29 增加登录反弹说明

一、目录结构

二、前端UI

PCweb http://sui.taobao.org/sui/docs/index.html
PC端是快,好看、标准 ,缺点ie6、ie7不支持

sui.taobao.org 已经挂掉了

PC端帮助文档 请使用 看里面的doc
https://github.com/sdc-alibaba/sui/archive/build.zip

手机端

手机 http://m.sui.taobao.org/components/

三、必备功能

3.1 上传

考虑上传到公有云上
公有:头像、图片、mp3
私有:资料 下载的图片

3.2 验证

3.3 sql 构造 防止注入

3.4 验证码

3.5.1 cookie存放内容 $cookievar

key 类型 说明
uid int 用户id
time int 登录时间截
name string 名字
school string 学校名字
head string 头像目录
ts int 身份
sign string 签名

3.5.2 sign 的计算

  1. cookievar中除去key sign
  2. key排序 ksort(cookievar )
  3. md5(秘钥.md5( http_build($cookievar)))

3.6 多渠道登录用户设计(邮箱、手机、自生成账号、微博微信等第三方登录)

3.6.1 user表

字段 类型 说明
user_id int 用户id
name string 显示名字
school string 学校
head string 头像路径
psw string 32位md5密码 = md5(md5(用户未加密psw).slat)
slat string 随机4位
email string 未做索引
tel string 手机号码不是必须不是唯一
ctime int 注册时间
last_time int 最后登录时间
login_cnt int 登录次数
ts int 身份 1为老师,2为学生 扩展3为家长
is_del int 1为注销

3.6.2 user_oauth表

user_id from openid索引

字段 类型 说明
id int 自增 无实际意义
user_id int 用户id 关联user
from int 1为email 2为tel 3qq 4为微博 5位微信
openid string email、tel、第三方opend
token string
ctime int 建立时间

3.7 路由 包括做好view层的链接

四、业务功能

4.1 班级管理

Created with Raphaël 2.1.2老师老师班级班级学生学生考题考题群聊群聊通知通知业务1业务1业务2业务2......建立/布置绑定/收发布置收发群发群发布置收发布置收发...

五、对外接口

5.1 登录反弹

https://www.haoce.com/index/login/post

参数 说明
openid 账号 邮箱/手机号码
psw 密码
loginback 需要登陆反弹的url

错误应答体: loginback?error=123&error_des=密码错误
正确应答体:loginback?haoce_info=base64_encode_数据&time=服务器时间&sign=签名
签名验证: sign= md5( haoce_info + key + time)
haoce_info 后的数据说明

字段 类型 说明
user_id int 用ID
name string 用户名称
school string 学校
ts int 身份 1 一般老师 2学生 3认证老师
number string 学号
last_time int 最后登录时间
login_cnt int 登录次数
sex int 性别 1男 2女 0未定义
head string 头像 可以在前面加上 http://cdn.haoce.com
  1. <?php
  2. if(isset($_REQUEST['haoce_info'])){
  3. $key = '-It is a key-';
  4. $sign= md5($_REQUEST['haoce_info'].$key. $_REQUEST['time'] );
  5. if( $sign == $_REQUEST['sign'] ){
  6. echo"签名正确\n<br>";
  7. }else{
  8. echo"签名失败得干些失败的活\n<br>";
  9. }
  10. echo"数据:<br>\n";
  11. print_r( json_decode ( base64_decode( $_REQUEST['haoce_info'] ) ) );
  12. exit();
  13. }
  14. ?>
  15. <!doctype html>
  16. <html lang="en">
  17. <head>
  18. <meta charset="UTF-8">
  19. <title>登录</title>
  20. </head>
  21. <body>
  22. <div style="color:red">
  23. <?php
  24. if( isset($_GET['error'])){
  25. echo "错误代码:".$_GET['error'] ;
  26. echo "\n<br>错误:".$_GET['error_des'] ;
  27. }
  28. ?></div>
  29. <form method="post" action="https://www.haoce.com/index/login/post">
  30. 账号: <input type="text" id="openid" name="openid" placeholder="邮箱/手机号码" > <br>
  31. 密码: <input type="password" name="psw" placeholder="密码6到12位" ><br>
  32. <input type="hidden" name="loginback" value="http://lab.pigai.org/hello3/login.php?d=good">
  33. <button type="submit" >登录</button>
  34. </form>
  35. </body>
  36. </html>

忘记密码 跟注册 带着 loginback过来 当取回密码后 或者注册好 也会随着 loginback将用户属性带过来

忘记密码
https://www.haoce.com/forgot?loginback=http://lab.pigai.org/hello3/login.php

注册
https://www.haoce.com/reg?loginback=http://lab.pigai.org/hello3/login.php

部署

Nginx dr.penly.cn.conf 配置

  1. server
  2. {
  3. listen 80;
  4. server_name dr.penly.cn ;
  5. index index.html index.php index.shtml index.htm ;
  6. root D:\yangdaorong\yunbi\penly2\phpWebApp\webroot;
  7. location / {
  8. if (!-e $request_filename) {
  9. rewrite ^/(.*) /index.php/$1 last;
  10. }
  11. break;
  12. }
  13. #include nginx_haoce.conf;
  14. location ~ \.php(/|$)
  15. {
  16. if ( $fastcgi_script_name != "/index.php" ) {
  17. return 403;
  18. }
  19. #include fastcgi_72;
  20. fastcgi_pass 127.0.0.1:9000;
  21. fastcgi_index index.php;
  22. fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
  23. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  24. fastcgi_param PATH_INFO $fastcgi_path_info;
  25. fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
  26. include fastcgi_params;
  27. fastcgi_param SERVER_ONLINE debug;
  28. }
  29. location ~ ^(.*)\/\.svn\/{
  30. return 403;
  31. }
  32. location ~* .(jpg|gif|png|js|css|ico)$ {
  33. if (-f $request_filename) {
  34. expires max;
  35. break;
  36. }
  37. }
  38. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注