PHP 学习之路(1)—— Simple Message 系统

这个项目在这儿:https://download.csdn.net/download/ahanwhite/11139410

啊,我是前端菜鸟~ 第一节就是前端的内容了,头疼之后也没得办法,做呗:

实验要求

一、仿照下图做一个注册网页(register.php),该页面包含一个表单,表单中包含以下信息

当用户点击 “注册” 按钮时,用户所填写的所有信息将被提交到一个目标页面(仅仅是一个普通页面,不对传来的数据做任何处理)(例如:registerverify.php), 要求:

该页面的内容自行设计。
在表单提交之前要求使用 JS 对表单的所有输入项进行校验,包括:账号、密码、确认密码、验证码不能为空;账号长度不得少于 4 位;密码长度在 6-8 位之间,必须要有字母或数字的组合;密码和确认密码必须一致。

作业整体要求:

1、页面布局及所有静态元素的摆放必须使用 Div+CSS 或 flex 弹性布局

2、页面元素的校验要使用 JavaScript 实现

网页整体实现

根据页面的内容,我将它分成了三大部分来写:1. 标题栏,2. 表单内容,3. 网站的著作权声明(这里照猫画虎了哈哈),然后整个网页(body)的背景是 rgb(248, 248, 255),中间内容(allDv)的背景是 rgb(240, 248, 255),表单内容框(formDv)背景是 white。

小技巧:根据图片获取颜色值,可以使用微信、QQ 等自带的截图,就会有相应的颜色代码在。
  1. 网站整体

网站整体居中,关键 css 代码为:margin 0 auto;(前提是设置好了宽度)。

#allDv {
    width: 68%;
    height: 65vh;
    margin: 0 auto;
    margin-top: 20px;
    background: rgb(240,248,255);
}
  1. 标题栏

标题栏的内容有 靠左的 LOGO,以及四个 靠右的可以点击的操作块儿。


所以,这里的思路应该是,给 logo 设置 float=left 的属性,给四个 div(图片与操作标题) float=left 的属性(注意代码第一个会在最右边哦比如我的第一个是注册用户)。四个 div 用同一个 class 名,给外边距(margin-left 或 margin-right),提供块与块之间的间距。最右边的块可以单独设置 id,给多一点的右边距。

  1. 表单内容


首先是表单内容这个 div 的边框,因为要实现这个深蓝色(rgb(70, 130, 180))的边框需要进行设置。图中仅有上边框较宽,那么设置好所有的宽度之后,在后面另设上边框高度即可。

#middleDv {
        border: 1vw solid rgb(70,130,180);
        border-top: 2vw solid rgb(70,130,180);
}

表单内容里又包括标题以及表单。

标题:标题其实就一个图片与一个文字,设置好相应字体颜色与适宜的高度即可。

表单:表单在图中是居中的,但是为了方便我使用的是内边距将其顶过去。(哈哈比较懒)但是这样容易使表单的 div 超出外面的 middle div,注意:padding-left+width 要等于 middle div 的 width(其实不等于也没事,我是强迫症哈哈哈)

表单里面的内容,因为仅允许使用 Div+CSS 或 flex 弹性布局(按老师讲的意思是不能用 table),那么这里的思路是所以的提示文字为同一个 class 的 div,设置相同的宽度,然后文本靠右(text-align),输入框也是一样,这样就能实现对齐,每一行的两个元素都需要 float=left; 然后使用一个空的 div,作为清楚浮动使用(clear:both;)。为了好看……emm 我还加了个 blank 空白 div,给个高度,然后设置了间隔(别问我为什么不用 margin…… 可能当时没想那么多吧哈哈哈)

  1. 网站的著作权

这个其实更简单了,就是一个 div 里面装文本然后居中,颜色为 #999 。

网站细节
看到很多人在做下拉框以及验证码的时候,下拉框就直接从 1990 年码到 2019 年,月份也码 12 个月,验证码就用一张图……

这样其实是 OK 的,本来这重点就不在于 HTML,但是唉,都是强迫症惹的祸呀,显得极其不高端… 打字又累,所以我又去 study 了一下 JavaScript。(也是为了完成那个验证的要求)

  1. 年月的自动生成。

使用 JavaScript 在页面访问时就将年月生成好。1. 获取 select 的 id,2. for 循环生成年月,复制给 option,添加 option 到 select,3. 设置两个 select 的默认值。

onload = function() {
    var myDate= new Date();
    var startYear=myDate.getFullYear()-60;//起始年份
    var endYear=myDate.getFullYear();//结束年份
    var endMonth = myDate.getMonth();//现在的月份
 
    var pickYear=document.getElementById('pickYear');
    for (var i=endYear;i>=startYear;i--) {
        var option = document.createElement('option');
        option.value = i;
        var txt = document.createTextNode(i);
        option.appendChild(txt);
        pickYear.appendChild(option);
    }
 
    var pickMonth=document.getElementById('pickMonth');
    for (var i=1;i<=endMonth+1;i++) {
        var option = document.createElement('option');
        option.value = i;
        var txt = document.createTextNode(i);
        option.appendChild(txt);
        pickMonth.appendChild(option);
    }
 
    pickYear.value = endYear;
    pickMonth.value = endMonth+1;
}
  1. 年月的动态改变

作为出生年月来讲,如果是 2019 年,用户还能选择 12 月…… 那就有点过分了,所以需要加一个动态改变的 js,当选择当前年份的话,生成的月份不会超过当前月份。

function selectYear() {
    var myDate= new Date();
    var myYear=document.getElementById('pickYear').value;
    var pickMonth=document.getElementById('pickMonth');
    pickMonth.options.length = 0;
    if (myYear != myDate.getFullYear()) {
        for (var i=1;i<=12;i++) {
            var option = document.createElement('option');
            option.value = i;
            var txt = document.createTextNode(i);
            option.appendChild(txt);
            pickMonth.appendChild(option);
        }
    } else {
        for (var i=1;i<=myDate.getMonth()+1;i++) {
            var option = document.createElement('option');
            option.value = i;
            var txt = document.createTextNode(i);
            option.appendChild(txt);
            pickMonth.appendChild(option);
        }
    }
}
  1. 验证码的实现

验证码实现的原理在各大语言中几乎都很相似,有太多的博客写过了~

我写的验证码就是借鉴(copy)的:http://www.php.cn/html5-tutorial-410216.html

  1. 最后还有验证环节

当然,做事情得做到尽善尽美。这里的验证我分为两种:一种是文本框实时验证,另一种是提交验证。

文本框的验证使用 onblur 方法即可实现,我的代码也是参考网上的,但是具体来源不记得了((;´д`) ゞ)这里贴一个文本框的代码吧~

$(document).ready(function() {
    //username的判断
    $("#username").blur(function() {
        var check = false;
        var inputName = document.getElementById("username").value;
        var div = document.getElementById("checkName");
        div.innerHTML = "";
        var font = document.createElement("font");
        if (inputName.length <= 0) { 
            font.setAttribute('color', 'red' ); 
            font.innerText="账号不能为空!" ; 
            div.appendChild(font); 
        } else if (inputName.length < 4) {
            font.setAttribute('color', 'red' ); 
            font.innerText="账号长度不能小于4位!" ; 
            div.appendChild(font);
        } else {
            font.setAttribute('color', 'green' ); 
            font.innerText=" " ;
            div.appendChild(font);
        }
    });
}

然后是提交验证,提交验证时是通过 form 表单的一个 onsubmit 属性来设置的,这个属性大概的意思就是传给它的值是 false 的话就不能通过。通过在每个输入框的验证方法内设置一个 boolean 参数,满足返回 ture,不满足返回 false,然后在最后设置一个方法来将几个方法做与运算,返回与运算的值给 onsubmit。

function check() {
    var check = checkUsername() && checkPassword() && checkSecpwd() && checkCaptcha();
    return check;
}

那么这个小 demo 就完成啦~

为了完善一下,我还稍微看了眼 PHP 的表单处理,将目标页面的内容设置成了~

    Dear  
 
    ,感谢您注册本网站。
 
    您的出生年月是月。

这个项目在这儿:https://download.csdn.net/download/ahanwhite/11139410

欢迎下载哦~

你可能感兴趣的:(PHP 学习之路(1)—— Simple Message 系统)