临近期末,终于把项目做好了
项目目标
- 本项目为校园二手商品交易市场,目标是搭建一个方便学生进行二手物品交易的平台。
关于项目使用的UML模型
用例图
对象模型
顺序图
项目前端使用了weui框架,后端逻辑则是自己构建
部分代码展示
登录模块
<?php
header("Content-Type: text/html;charset=utf-8");
session_start();
$type=check_safe($_POST['type']);
$mm=check_safe($_POST['mm']);
$type=empty($type)?print_error(98,"no zh"):$type;
$mm=empty($mm)?print_error(98,"no mm"):$mm;
// $type=addslashes($type);
// $mm=addslashes($mm);
// var_dump($zh);
$con = new mysqli('localhost', '你的账号', '你的密码', 'secondhand_market');
switch ($type) {
case '1'://登入
$num=check_safe($_POST['check_num']);
// var_dump($num);die;
$num=empty($num)?print_error(98,"没有验证码"):$num;//
// $num=addslashes($num);
$verify_num=$_SESSION["verify_code"];
// var_dump($num,$verify_num);die;
if($num!=$verify_num)print_error(98,"验证码错误");
$zh=check_safe($_POST['zh']);
$zh=empty($zh)?print_error(98,"no zh"):$zh;
// $zh=addslashes($zh);
$result=$con->query("SELECT * FROM `user_info` WHERE `zh`='".$zh."' AND `mm`='".$mm."'");
$resd=$result->fetch_array();
// var_dump($resd);
if(!$resd){
print_error(97,"没有该账号");
}
// var_dump($resd);
// var_dump($resd["zh"]);
if($resd['zh']==$zh&&$resd['mm']==$mm){
// var_dump($resd["key_user"]);die;
print_ok(100,"登入成功",array("name"=>$resd["user_name"],"id"=>$resd["user_id"],"img"=>$resd["head_img"],"key"=>$resd["key_user"]));
}else{
print_error(98,"账号密码出错了");
// print_ok(100,"登入成功",array("name"=>$resd["user_name"],"id"=>$resd["user_id"],"img"=>$resd["head_img"],"data"=>array("zh"=>$zh,"mm"=>$mm)));
}
break;
case '2'://注册
// if(!is_numeric($zh))print_error(98,"账号必须是纯数字");
// if(strlen($zh)<8)print_error(98,"账号位数必须大于8位");
$num=check_safe($_POST['check_num']);
$num=empty($num)?print_error(98,"没有验证码"):$num;//
// $num=addslashes($num);
$verify_num=$_SESSION["verify_code"];
// var_dump($num,$verify_num);die;
if($num!=$verify_num)print_error(98,"验证码错误");
$user_name=check_safe($_POST['name']);
$user_name=empty($user_name)?print_error(98,"no name"):$user_name;//用户名
// $user_name=addslashes($user_name);
$zh=0;
while (1) {
$zh=rand(100000000,999999999);
$zh=addslashes($zh);
$result=$con->query("SELECT * FROM `user_info` WHERE `zh`='".$zh."'");
if($result->num_rows==0)break;
}
// var_dump($zh);die;
// var_dump($resd);
if(!$result->num_rows){//如果没有该账号,可以进行注册
$num=0;
while(1){
$user_id=rand(10000000,99999999);
$user_id=addslashes($user_id);
$row=$con->query("SELECT * FROM `user_info` WHERE `user_id`='".$user_id."'")->num_rows;
if($row==0){//没有这个id才可以存
$str=$user_id."hzm".time();
$key=sha1($str);//生成唯一的身份认证key
// $str2="h".$mm."zm666";//密码加密
$rowed=$con->query("INSERT INTO `user_info`(`zh`, `mm`, `user_name`, `user_id`, `head_img`,`key_user`) VALUES ('".$zh."','".$mm."','".$user_name."','".$user_id."','qipao.png','".$key."')");
if($rowed){
print_ok(100,"注册成功",array("account"=>$zh,"id"=>$user_id,"key"=>$key));
}
$num++;
if($num>40)print_error(98,"注册失败");
}
}
}else{
print_error(98,"该账号已经被注册");
}
// var_dump($resd);
// var_dump($resd["zh"]);
break;
}
function print_error($res=null,$text=null){
die(json_encode(array("res"=>$res,"text"=>$text),JSON_UNESCAPED_UNICODE));
}
function print_ok($res=null,$text=null,$data=null){
if(!$data)die(json_encode(array("res"=>$res,"text"=>$text),JSON_UNESCAPED_UNICODE));
else die(json_encode(array("res"=>$res,"text"=>$text,"data"=>$data),JSON_UNESCAPED_UNICODE));
}
function check_safe($str){
// var_dump($str);
$str=htmlspecialchars($str);
// var_dump($str);
$str=trim($str);
// var_dump($str);
$str=addslashes($str);
// var_dump($str);
return $str;
}
?>
图片上传模块
<?php
header("Content-Type: text/html;charset=utf-8");
function get_hash(){//得到hashe值
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
$random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times
$content = uniqid().$random.time(); // 类似 5443e09c27bf4aB4uT
return sha1($content);
}
$con = new mysqli('localhost', '你的账号', '你的密码', 'secondhand_market');
if (!$con) {
die("conection failed: " . mysqli_connect_error());
}
//$_FILES['file']的file 和前端的input的name一致
$str = $_FILES['file']['name'];
// var_dump($imgname);die;
$str=explode('&',$str);
$img_type=explode('.', $str[0]);
// var_dump($img_type);die;
$imgname=get_hash().'.'.$img_type[1];
$tmp = $_FILES['file']['tmp_name'];
// var_dump($_FILES['file']['typed']);die;
$filepath;
switch(explode('=',$str[1])[1]){
case '1':
$filepath = '目录1';//使用绝对路径
break;
case '2':
$filepath = '目录2';//使用绝对路径
break;
default:
var_dump("出错了");die;
break;
}
if(move_uploaded_file($tmp,$filepath.$imgname)){
$result=$con->query("INSERT INTO `upload`(`path`) VALUES ('".$imgname."')");
if($result){
die(json_encode(array(
"res"=>100,
"data"=>array(
"url"=>$imgname
// "destination"=>$filepath.$imgname,
// "filename"=>$imgname,
// "file_info"=>$_FILES,//上传的图片的详细信息
)
)));
}else{
die(json_encode(array("res"=>99,"data"=>"上传失败2")));
}
}else{
die(json_encode(array("res"=>99,"data"=>"上传失败1")));
}
?>