UniApp 和 PHP 开发的多端微商城
由于提出的是一个较为复杂的开发项目,而且涉及到的代码量较大,因此我无法提供完整的代码实例。但我可以提供一个简化版的UniApp前端和PHP后端的用户登录功能示例。
前端(UniApp)
<template>
<view>
<input type="text" placeholder="用户名" v-model="username" />
<input type="password" placeholder="密码" v-model="password" />
<button @click="login">登录</button>
</view>
</template>
<script>
export default {
data() {
return {
username: '',
password: ''
};
},
methods: {
async login() {
try {
const res = await this.$http.post('/api/login', {
username: this.username,
password: this.password
});
// 登录成功,保存token等操作
uni.setStorageSync('userToken', res.data.token);
// 跳转到首页
uni.switchTab({
url: '/pages/index/index'
});
} catch (error) {
// 登录失败处理
console.error('登录失败', error);
}
}
}
};
</script>
后端(PHP)
<?php
// api/login.php
include 'db.php'; // 假设db.php文件中包含了数据库连接和查询逻辑
$username = $_POST['username'];
$password = md5($_POST['password']); // 假设使用MD5加密
$query = "SELECT * FROM users WHERE username = ? AND password = ?";
$stmt = $pdo->prepare($query);
$stmt->execute([$username, $password]);
if ($user = $stmt->fetch(PDO::FETCH_ASSOC)) {
// 生成token
$token = bin2hex(random_bytes(32));
// 保存token到数据库
$update_token_query = "UPDATE users SET token = ? WHERE id = ?";
$stmt = $pdo->prepare($update_token_query);
$stmt->execute([$token, $user['id']]);
// 返回token
echo json_encode(['token' => $token]);
} else {
// 用户名密码错误
echo json_encode(['error' => '登录失败']);
}
以上代码仅为示例,实际开发时需要考虑更多安全性和错误处理的细节,比如使用HTTPS、验证码、双重验证等。同时,数据库操作应使用预处理语句防止SQL注入攻击。此外,生产环境中应使用更安全的密码散列方法,如bcrypt或argon2。
评论已关闭