原文地址:个人商城系统开源(注册) - Pleasure的博客
下面是正文内容:
前言
由于近期实在没有什么话题可写和一些有趣的项目教程可以分享。所以我只能决定将我自己亲手编写的一个迷你迷你商城系统进行开源。
也就是放在我博客右边的"我的另一个网站"(由于实在没什么生意只能开源了,充当教材)
开始分享一些前后端全栈的内容,希望对你们有所帮助。
虽然是迷你的商城系统,但是由于要实现每一部分各自的功能还是非常复杂的,比如用户的注册登录,手机号邮箱的绑定,充值支付功能的实现等等。
所以在这里我会花一周的时间按照功能进行划分来逐块解释,也好水一周的文章。顺便可以迁个站,整理一下代码。
看之前还是麻烦大家点点关注,谢谢!(就不选仅粉丝可见了)
如果在实现上存在什么问题,可以联系我。
正文
上回书说到商城系统的登录功能,但由于可能过于简单,以及话题较为老套,所以没什么阅读量。
而且现在这种商城系统的编辑大多采用vue+spring boot的模式进行编辑,采用php的很少。
但又都是必要的功能无法省去。一些重复的话就不说了,直接进入正题。
文章链接:个人商城系统开源(登录) - Pleasure的博客
https://yiming1234.blog.csdn.net/article/details/136496259
话不多说,直接粘贴源码。前端页面需要到之前的文章中去找了。
核心文件就是registeraction.php,剩下的就是一些跳转页面,registerfail.php,registersuccess.php,registerfail2.php等等。
registeraction.php的内容
<?php
$username = $_POST['username'];
$password = $_POST['password'];
$re_password = $_POST['re_password'];
require "../conn.php";
function isPasswordComplex($password)
{
$uppercase = preg_match('@[A-Z]@', $password);
$lowercase = preg_match('@[a-z]@', $password);
$number = preg_match('@[0-9]@', $password);
if (!$uppercase || !$lowercase || !$number || strlen($password) < 8) {
return false;
} else {
return true;
}
}
if ($password == $re_password) {
if (isPasswordComplex($password)) {
$stmt_select = $conn->prepare("SELECT username FROM content WHERE username = ?");
$stmt_select->bind_param("s", $username);
$stmt_select->execute();
$ret = $stmt_select->get_result();
$num = $ret->num_rows;
if ($num < 1) {
$stmt_insert_content = $conn->prepare("INSERT INTO content (username,password) VALUES(?,?)");
$stmt_insert_content->bind_param("ss", $username, $password);
$stmt_insert_content->execute();
$result = $stmt_insert_content->get_result();
$stmt_insert_account = $conn->prepare("INSERT INTO account (username) VALUES(?)");
$stmt_insert_account->bind_param("s", $username);
$stmt_insert_account->execute();
$stmt_insert_email = $conn->prepare("INSERT INTO email (username) VALUES(?)");
$stmt_insert_email->bind_param("s", $username);
$stmt_insert_email->execute();
$stmt_insert_phone = $conn->prepare("INSERT INTO phone (username) VALUES(?)");
$stmt_insert_phone->bind_param("s", $username);
$stmt_insert_phone->execute();
$stmt_insert_subscribe = $conn->prepare("INSERT INTO subscribe (username) VALUES(?)");
$stmt_insert_subscribe->bind_param("s", $username);
$stmt_insert_subscribe->execute();
if ($stmt_insert_content->affected_rows > 0) {
session_start();
$_SESSION['username'] = $username;
$remaining = new DateTime('1000-01-01 00:00:00');
$_SESSION['remaining'] = $remaining;
$token = bin2hex(random_bytes(16));
$_SESSION['token'] = $token;
header('refresh: 0;url=./registersuccess.php');
exit;
} else {
header('refresh: 0;url=./loginfail.php');
}
} else {
header('refresh: 0;url=./loginexit.php');
}
} else {
header('refresh: 0;url=./registerfail.php');
}
} else {
header('refresh: 0;url=./registerfail2.php');
}
其中涉及到邮箱的验证(强制跳转),在之前的文章中已经介绍过了。
源码下载地址:见之前的文章。
尾声
理论上应该是还有一个头像上传,密码重置,以及登录状态保持功能的分享。后面会断断续续进行更新。但由于这些功能并不是必要的,以及项目的适用范围有限,就先不分享了。
主要是php的应用范围实在有限,而且目前正在自学Vue+Spring Boot内容,后面可能会主要分享一些这方面的内容。