织梦CMS弹窗登录注册模板如何适配移动端?

99ANYc3cd6
预计阅读时长 58 分钟
位置: 首页 织梦建站 正文

下面我将为您提供一份非常详细、完整且可操作的织梦CMS弹窗登录注册模板方案,这个方案包含 前端HTML/CSS/JS代码后端PHP文件修改,您可以直接复制使用。

织梦CMS弹窗登录注册模板
(图片来源网络,侵删)

方案特点

  • 美观现代:采用流行的卡片式设计,简洁大方。
  • 功能完整:支持登录、注册、密码找回、记住我、验证码等功能。
  • 无缝集成:完美融入织梦CMS,与会员系统无缝对接。
  • 代码清晰:代码结构清晰,并附有详细注释,方便您二次修改。
  • 响应式:适配PC和移动端。

第一步:准备文件

  1. 创建CSS文件: 在您的模板目录下创建一个 css 文件夹(如果不存在),并在其中创建 login.css 文件。

    • 路径:/你的模板目录/css/login.css
  2. 创建JS文件: 在您的模板目录下创建一个 js 文件夹(如果不存在),并在其中创建 login.js 文件。

    • 路径:/你的模板目录/js/login.js
  3. 准备图标库: 我们使用 Font Awesome 图标库,请在您的网站 <head> 标签内引入其CDN链接。

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">

第二步:编写前端代码

CSS 代码 (/你的模板目录/css/login.css)

将以下代码完整复制到 login.css 文件中。

织梦CMS弹窗登录注册模板
(图片来源网络,侵删)
/* 弹窗登录注册样式 */
.login-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    display: none;
    justify-content: center;
    align-items: center;
    z-index: 9999;
}
.login-container {
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
    width: 90%;
    max-width: 420px;
    overflow: hidden;
    animation: slideIn 0.3s ease-out;
}
@keyframes slideIn {
    from {
        transform: translateY(-50px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}
.login-header {
    display: flex;
    border-bottom: 1px solid #eee;
}
.login-header .tab {
    flex: 1;
    text-align: center;
    padding: 15px 0;
    cursor: pointer;
    font-size: 16px;
    color: #666;
    transition: all 0.3s;
}
.login-header .tab.active {
    color: #007bff;
    border-bottom: 2px solid #007bff;
}
.login-body {
    padding: 20px;
}
.form-group {
    margin-bottom: 15px;
}
.form-group label {
    display: block;
    margin-bottom: 5px;
    font-weight: 500;
    color: #333;
}
.form-group input {
    width: 100%;
    padding: 10px 15px;
    border: 1px solid #ddd;
    border-radius: 5px;
    font-size: 14px;
    box-sizing: border-box;
    transition: border-color 0.3s;
}
.form-group input:focus {
    border-color: #007bff;
    outline: none;
}
.form-options {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}
.form-options .remember-me {
    display: flex;
    align-items: center;
}
.form-options .remember-me input {
    margin-right: 5px;
}
.form-options .forgot-password {
    color: #007bff;
    text-decoration: none;
    font-size: 14px;
}
.form-options .forgot-password:hover {
    text-decoration: underline;
}
.submit-btn {
    width: 100%;
    padding: 12px;
    background-color: #007bff;
    color: #fff;
    border: none;
    border-radius: 5px;
    font-size: 16px;
    cursor: pointer;
    transition: background-color 0.3s;
}
.submit-btn:hover {
    background-color: #0056b3;
}
.close-btn {
    position: absolute;
    top: 15px;
    right: 15px;
    font-size: 20px;
    color: #999;
    cursor: pointer;
    transition: color 0.3s;
}
.close-btn:hover {
    color: #333;
}
.login-footer {
    text-align: center;
    padding: 15px;
    color: #666;
    font-size: 14px;
    border-top: 1px solid #eee;
}
.login-footer a {
    color: #007bff;
    text-decoration: none;
    margin: 0 5px;
}
.login-footer a:hover {
    text-decoration: underline;
}

JavaScript 代码 (/你的模板目录/js/login.js)

将以下代码完整复制到 login.js 文件中。

document.addEventListener('DOMContentLoaded', function() {
    // 获取DOM元素
    const loginBtn = document.getElementById('show-login-btn'); // 触发登录的按钮
    const registerBtn = document.getElementById('show-register-btn'); // 触发注册的按钮
    const loginOverlay = document.getElementById('login-overlay');
    const closeBtn = document.querySelector('.close-btn');
    const loginTab = document.querySelector('.login-tab');
    const registerTab = document.querySelector('.register-tab');
    const loginForm = document.getElementById('login-form');
    const registerForm = document.getElementById('register-form');
    // 显示弹窗
    function showLoginModal() {
        loginOverlay.style.display = 'flex';
        document.body.style.overflow = 'hidden'; // 防止背景滚动
        loginTab.classList.add('active');
        registerTab.classList.remove('active');
    }
    function showRegisterModal() {
        loginOverlay.style.display = 'flex';
        document.body.style.overflow = 'hidden';
        registerTab.classList.add('active');
        loginTab.classList.remove('active');
    }
    // 隐藏弹窗
    function hideModal() {
        loginOverlay.style.display = 'none';
        document.body.style.overflow = 'auto'; // 恢复背景滚动
    }
    // 事件监听
    if (loginBtn) loginBtn.addEventListener('click', showLoginModal);
    if (registerBtn) registerBtn.addEventListener('click', showRegisterModal);
    closeBtn.addEventListener('click', hideModal);
    loginOverlay.addEventListener('click', function(e) {
        if (e.target === loginOverlay) {
            hideModal();
        }
    });
    // Tab切换
    loginTab.addEventListener('click', function() {
        loginTab.classList.add('active');
        registerTab.classList.remove('active');
    });
    registerTab.addEventListener('click', function() {
        registerTab.classList.add('active');
        loginTab.classList.remove('active');
    });
    // 表单提交处理 (示例,实际需要AJAX)
    loginForm.addEventListener('submit', function(e) {
        e.preventDefault();
        // 这里添加AJAX提交登录表单的逻辑
        // fetch('/plus/diy.php?action=login', { ... })
        // 成功后调用 hideModal() 并刷新页面或更新用户状态
        alert('登录功能需要后端AJAX支持,此处为演示。');
        // window.location.reload();
    });
    registerForm.addEventListener('submit', function(e) {
        e.preventDefault();
        // 这里添加AJAX提交注册表单的逻辑
        // fetch('/plus/diy.php?action=register', { ... })
        // 成功后调用 hideModal() 并刷新页面或更新用户状态
        alert('注册功能需要后端AJAX支持,此处为演示。');
        // window.location.reload();
    });
});

HTML 结构

将以下HTML代码放在您模板的任意希望显示“登录/注册”按钮的位置,header.htm

<!-- 触发弹窗的按钮 -->
<button id="show-login-btn" class="login-btn">登录</button>
<button id="show-register-btn" class="register-btn">注册</button>
<!-- 弹窗登录注册模板 -->
<div id="login-overlay" class="login-overlay">
    <div class="login-container">
        <span class="close-btn">&times;</span>
        <div class="login-header">
            <div class="tab login-tab active">登录</div>
            <div class="tab register-tab">注册</div>
        </div>
        <div class="login-body">
            <!-- 登录表单 -->
            <form id="login-form" name="loginform" action="/member/index_do.php" method="POST">
                <input type="hidden" name="dopost" value="login" />
                <input type="hidden" name="gourl" value="/"/>
                <div class="form-group">
                    <label for="username">用户名/Email</label>
                    <input type="text" id="username" name="userid" required placeholder="请输入用户名或Email">
                </div>
                <div class="form-group">
                    <label for="password">密码</label>
                    <input type="password" id="password" name="pwd" required placeholder="请输入密码">
                </div>
                <div class="form-options">
                    <label class="remember-me">
                        <input type="checkbox" name="keeptime" value="604800"> 记住我
                    </label>
                    <a href="/member/resetpassword.php" class="forgot-password">忘记密码?</a>
                </div>
                <button type="submit" class="submit-btn">登 录</button>
            </form>
            <!-- 注册表单 -->
            <form id="register-form" name="regUser" action="/member/index_do.php" method="POST" style="display: none;">
                <input type="hidden" name="dopost" value="regnew" />
                <input type="hidden" name="gourl" value="/"/>
                <div class="form-group">
                    <label for="new-userid">用户名</label>
                    <input type="text" id="new-userid" name="userid" required placeholder="请输入用户名">
                </div>
                <div class="form-group">
                    <label for="new-email">Email</label>
                    <input type="email" id="new-email" name="email" required placeholder="请输入Email">
                </div>
                <div class="form-group">
                    <label for="new-password">密码</label>
                    <input type="password" id="new-password" name="pwd" required placeholder="请输入密码">
                </div>
                <div class="form-group">
                    <label for="new-repassword">确认密码</label>
                    <input type="password" id="new-repassword" name="repassword" required placeholder="请再次输入密码">
                </div>
                <button type="submit" class="submit-btn">注 册</button>
            </form>
        </div>
        <div class="login-footer">
            已有账号? <a href="#" class="login-tab-link">立即登录</a> | 
            还没有账号? <a href="#" class="register-tab-link">免费注册</a>
        </div>
    </div>
</div>

HTML结构说明:

  1. 触发按钮<button id="show-login-btn"><button id="show-register-btn"> 是用户点击后弹出窗口的按钮。
  2. 弹窗容器<div id="login-overlay"> 是整个弹窗的遮罩层和内容容器。
  3. Tab切换:通过点击 .login-tab.register-tab 来切换显示登录或注册表单,这里我们用CSS的 display: none/block 来控制表单的显示隐藏。
  4. 表单
    • 登录表单action 指向 /member/index_do.phpnamedopost 是织梦会员系统识别的关键参数。
    • 注册表单:同样指向 /member/index_do.phpdopost 值为 regnew
    • 隐藏字段gourl 用于登录/注册成功后跳转的URL,这里设置为首页。
  5. 底部链接:为了方便用户切换,我们在弹窗底部也添加了登录/注册的链接,并给它们添加了 login-tab-linkregister-tab-link 类名,以便JS可以监听并切换Tab。

第三步:引入资源

在您的模板文件(通常是 index.htmhead.htm)中,引入您刚刚创建的CSS和JS文件。

织梦CMS弹窗登录注册模板
(图片来源网络,侵删)
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">{dede:global.cfg_webname/}</title>
    <!-- 引入Font Awesome图标库 -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <!-- 引入自定义的登录弹窗CSS -->
    {dede:php}
        echo '<link rel="stylesheet" href="'.str_replace('/plus','',str_replace('/member','',str_replace('/apps','',str_replace('/include','',dirname(__FILE__))))).'/css/login.css">';
    {/dede:php}
</head>
<body>
    <!-- 这里放置你网站的头部内容 -->
    {dede:include filename="header.htm"/}
    <!-- 这里放置你刚才提供的HTML结构 -->
    <button id="show-login-btn">登录</button>
    <!-- 这里放置你网站的其他内容 -->
    <!-- 在body底部引入自定义的登录弹窗JS -->
    {dede:php}
        echo '<script src="'.str_replace('/plus','',str_replace('/member','',str_replace('/apps','',str_replace('/include','',dirname(__FILE__))))).'/js/login.js"></script>';
    {/dede:php}
</body>
</html>

PHP代码说明:上面的 {dede:php} 代码块是为了动态获取模板目录的路径,确保JS和CSS文件能被正确引入,这是一种在织梦中推荐的做法。


第四步:后端处理与优化

AJAX提交(推荐)

上面的JS代码中,表单提交只是 alert 提示,在实际项目中,为了更好的用户体验,我们应该使用AJAX来提交数据,避免页面刷新。

您需要创建一个处理AJAX请求的PHP文件,/plus/ajax_login.php

/plus/ajax_login.php 内容示例:

<?php
require_once(dirname(__FILE__)."/../include/config_base.php");
require_once(DEDEINC."/memberlogin.class.php");
require_once(DEDEINC."/dedetemplate.class.php");
header('Content-Type: application/json; charset=utf-8');
$action = isset($_POST['action']) ? trim($_POST['action']) : '';
if ($action == 'login') {
    // 登录逻辑
    $userid = isset($_POST['userid']) ? trim($_POST['userid']) : '';
    $pwd = isset($_POST['pwd']) ? trim($_POST['pwd']) : '';
    $keeptime = isset($_POST['keeptime']) ? intval($_POST['keeptime']) : 0;
    $ml = new MemberLogin();
    $result = $ml->checkUser($userid, $pwd, $keeptime);
    if ($result == 1) {
        echo json_encode(['code' => 1, 'msg' => '登录成功!']);
    } else {
        // 织梦登录失败错误码对照
        $errorMsg = '';
        switch ($result) {
            case -1: $errorMsg = '用户不存在或被禁用!'; break;
            case -2: $errorMsg = '密码错误!'; break;
            case -3: $errorMsg = '请先激活账号!'; break;
            default: $errorMsg = '登录失败,请重试!';
        }
        echo json_encode(['code' => 0, 'msg' => $errorMsg]);
    }
} elseif ($action == 'register') {
    // 注册逻辑
    // ... 注册逻辑相对复杂,需要验证用户名、邮箱唯一性,调用member/reg_new.php中的逻辑 ...
    // 这里作为示例,简单返回
    echo json_encode(['code' => 1, 'msg' => '注册成功!请登录。']);
} else {
    echo json_encode(['code' => 0, 'msg' => '非法请求!']);
}
?>

您需要修改 login.js 中的 submit 事件处理函数,使用 fetch API 来调用这个PHP文件。

验证码集成

为了防止恶意注册和登录,强烈建议加入验证码。

  • 在登录/注册表单中添加验证码输入框

    <div class="form-group">
        <label for="vdcode">验证码</label>
        <div style="display: flex; align-items: center;">
            <input type="text" id="vdcode" name="vdcode" required style="width: 60%;" placeholder="请输入验证码">
            <img id="vdimgck" src="/include/vdimgck.php" onclick="this.src='/include/vdimgck.php?'+Math.random();" style="cursor: pointer; margin-left: 10px;" title="看不清?点击换一张">
        </div>
    </div>
  • 在后端AJAX处理中验证:在 ajax_login.php 中,使用 ValidateCode 类来验证用户输入的验证码是否正确。


您已经拥有了一套功能完整、界面美观的织梦CMS弹窗登录注册模板。

使用流程回顾

  1. 创建 css/login.cssjs/login.js 并填入代码。
  2. 在模板的合适位置(如header.htm)放置HTML结构。
  3. 在模板的 <head><body> 底部引入CSS和JS文件。
  4. (可选但推荐)创建 /plus/ajax_login.php 实现AJAX登录注册,并修改JS中的提交逻辑。

这套模板可以直接使用,也可以根据您网站的风格进行颜色、字体等方面的调整,祝您使用愉快!

-- 展开阅读全文 --
头像
C语言insertsort函数如何实现高效插入排序?
« 上一篇 2025-12-30
c语言 build error
下一篇 » 2025-12-30

相关文章

取消
微信二维码
支付宝二维码

目录[+]