个人商城系统开源(注册)

news/2024/7/10 22:18:59 标签: 开源, 后端, 笔记

原文地址:个人商城系统开源(注册) - 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内容,后面可能会主要分享一些这方面的内容。


http://www.niftyadmin.cn/n/5431060.html

相关文章

飞桨自然语言处理套件PaddleNLP初探

PaddleNLP是一款简单易用且功能强大的自然语言处理和大语言模型(LLM)开发库。聚合业界优质预训练模型并提供开箱即用的开发体验&#xff0c;覆盖NLP多场景的模型库搭配产业实践范例可满足开发者灵活定制的需求。 官网&#xff1a;GitHub - PaddlePaddle/PaddleNLP: &#x1f4…

Spring MVC(一)— DispatcherServlet

DispatcherServlet 是Spring MVC框架的HTTP 请求处理器的中央调度器。它具有以下的功能&#xff1a; 1&#xff09;基于IoC容器JavaBean配置机制。 2&#xff09;使用HandlerMappingl来实现请求到处理器的路由映射。 3&#xff09;使用HandlerAdapter 来处理不同的处理器。 …

创建队列链表(C#、java)

文章目录 1、创建队列2、队列节点3、程序入口 1、创建队列 namespace Testmain {public class StackQueue{QNode Front new QNode(-1);QNode Rear new QNode(-1);QNode curNode;public StackQueue(int data){curNode new QNode(data);if (Front.next null){Front.next cu…

微信小程序-webview分享

项目背景 最近有个讨论区项目需要补充分享功能&#xff0c;希望可以支持在微信小程序进行分享&#xff0c;讨论区是基于react的h5项目&#xff0c;在小程序中是使用we-view进行承载的 可行性 目标是在打开web-view的页面进行分享&#xff0c;那就需要涉及h5和小程序的通讯问…

ASP.NET-WebFoms常见前后端交互方式

在 ASP.NET Web Forms 中&#xff0c;实现前后端交互是开发 Web 应用程序的重要部分。通过合适的数据传递方式&#xff0c;前端页面能够与后端进行有效的通信&#xff0c;并实现数据的传递、处理和展示。本文介绍了ASP.NET Web Forms开发中常见的前后端交互方式&#xff0c;包括…

什么是去中心化,如何去中心化

去中心化&#xff08;Decentralization&#xff09;是指在组织、管理或运作中减少或消除中心化机构或权力的控制和影响&#xff0c;使得决策和资源分配更加分散和民主化的一种管理模式。在数字化和信息化时代&#xff0c;去中心化成为了一个重要的概念&#xff0c;尤其在区块链…

SpringCloud Stream 消息驱动

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第九篇&#xff0c;即介绍 Stream 消息驱动。 二、消息驱动概念 2.1 消息驱动是什么 官方定义 Spring …

前端 - 让多个块级元素div在同一行显示的3种方式

【需求说明】 <div>元素是块级元素,默认它们会自动换行. 如果要想是多个div在同一行中,方法有如下几个: 方法1:使用浮动float属性 - float:left; 创建了一个名为.inline-div的CSS类,设置float: left;属性,以及其他自定义属性。 然后,我们将这个…