在项目中几个需要学习的知识

首先说今天学习的是做一个图书商城的小项目,但是之前学习的好多知识都要使用上面的啦,嘿嘿,顿时感觉有点成就感,因为之前学习的好多的知识点还是蛮碎的,现在可以通过做程序练习练习,这是在还不过的,在小项目做今天学习了很多的新知识,也许以后工作以后我会使用到这些吧,想清晰点的总结一下,以免忘记可以重新在这里找回,好啦总结一下今天学习的新知识。

一.发送邮件激活注册的账号

public static void SendManyEmail(string id, params string[] EamilTo)
        {                  //参数EamilTo可能会以键值对的形式存在,由于可能是发送者的地址或者发送者的名字都存在
            EamilTo[0] = "[email protected]";     //接收邮件的人
            MailMessage mail = new MailMessage();//这个类就包含了所有要发送邮件需要的参数
            mail.From = new MailAddress("[email protected]", "lala");///发送者的邮件地址和发送者的名字
            foreach (var email in EamilTo)
            {
                mail.To.Add(new MailAddress(email,"lala"));//目的邮件地址。可以有多个收件人
            }
            mail.Subject = "Introduce myself"; //发送邮件的主题
            StringBuilder builder = new StringBuilder();
            string emailaddress = "http://localhost:6994/ashx/ActiveUser.ashx?id=" + id + "&entype=" + Guid.NewGuid().ToString() + "";
            builder.Append("<p><a href=" + emailaddress + ">" + emailaddress + "</a></p>");
            mail.Body = builder.ToString();//发送邮件的内容
            mail.IsBodyHtml = true;//是否发送HTML格式的邮件
            SmtpClient client = new SmtpClient("smtp.qq.com");//发送邮件的协议
            client.UseDefaultCredentials = true;//设置开启验证
            client.Credentials = new NetworkCredential("[email protected]", "123");//用户名和密码
            client.Send(mail);//发送邮件
        }

上面其实就是我们在浏览其他网页时间需要注册账号,但是不是立即成为此网站的用户,好多都是通过发送邮箱邮件,然后我们需要去邮箱中激活即可乘此此网站的用户,上面的一个方法就是实现其功能的,我们使用类MailMessage时间需要引入命名空间using System.Net.Mail,在使用SmtpClient时间需要引入命名空间using System.Net,这也是我们需要注意的。

二.判断验证码的封装

/// <summary>
        /// 判断验证码
        /// </summary>
        /// <param name="vcode">验证码上面的数字,即客户端的值</param>
        /// <param name="session">服务器上面的值</param>
        /// <returns>是否相等,不等时间为true,相等时间为false</returns>
        public static bool VCodeEqualSession(string vcode, string session)
        {
            if (!vcode.Equals(session, StringComparison.OrdinalIgnoreCase))
            {                          //不区分大小写
                return true;
            }
            else
            {
                return false;
            }
        }

前面总结了写一个验证码的写法以及调用,但是我们可以想到我们在注册时间需要判断验证码,但是在登录时间仍然需要,在商城中支付时间也是需要的,等等,这些我们就是使其代码冗余,与其这样我就就来疯转一个方法如上所示判断验证码输入是否正确。

三.密码加密使用MD5

/// <summary>
        /// 用户注册密码使用MD5加密方式进行加密
        /// </summary>
        /// <param name="pwd">用户输入的密码</param>
        /// <returns>字符串类型加密后的密码</returns>
        public static string Md5Security(string pwd)
        {
            byte[] firpwd = Encoding.Default.GetBytes(pwd);
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] secpwd = md5.ComputeHash(firpwd);
            return BitConverter.ToString(secpwd).Replace("-","").ToLower();
        }

其实对于我们来说MD5的加密方式已经是很熟悉的啦,但是我们之前都没有对其封装,只是每次使用一次都写一次方法,例如:我们在注册时间对其密码进行了加密,那么我们在登录时间加密也是很有必要的,因此这时间我们进行封转就不会出现代码冗余的情况。希望以后能养成后的习惯,熟练的封装类,嘿嘿。

四.model中建立外键的关系

private UserStates u=new UserStates();
public  UserStates UserStateId
        {
            set { u= value; }
            get{return u;}
        }

public partial class UserStates
    {
        public UserStates()
        {}
        private int _id;
        private string _name;
        public int Id
        {
            set{ _id=value;}
            get{return _id;}
        }
        public string Name
        {
            set{ _name=value;}
            get{return _name;}
        }
    }
new SqlParameter("@otherid",model.UserStateId.Id)

上面就是我们以后要是建立外键关系时间需要注意的地方,由于在数据库中建立外键关系,想要改变其中一张表的结构,那么另外一张表的关系大多时间下也受约束需要改变,这样改变起来甚是麻烦的,而且在以后的工作中对数据库的操作也不一定是我们程序员做的事情,当然这个视情况而定的,所以我们把关系建立在model实体类里面,建立的外键并不是想要获取其外键,而是通过外键获取另外一张表的信息,因此我是直接使用这样的方法让我们使用起来更加的方便。首先需要实例化一下与本张表相关联的model类,然后创建一个对象,此时我们的属性就可以写为一个“类名:对象”,然后如上面所示,我们在调用model中的属性时间需要model.UserStateId.Id来调用其id,总之就是这样的。

好啦,今天就总计到这里,其实还有好多需要总结的啦,就等到明天吧,我还需要更多的时间练习,嘿嘿,每当开始做项目时间还是蛮激动的,不论是兴趣也好,希望也好,但是我就是渴望自己能够通过努力看到自己能够完成更多的程序,加油加油!!!

时间: 2024-10-16 01:29:08

在项目中几个需要学习的知识的相关文章

Android的学习之路(四)项目中清单文件的学习和android中经常使用的显示单位

1.所谓的清单文件就是项目中的AndroidManifest.xml文件.这个文件但是有大用处的.比方:app的名字,图标.app支持的版本号app的包名等等.以下我就介绍下这个清单文件的各个參数的作用. <manifest xmlns:android="http://schemas.android.com/apk/res/android"命名空间 package="com.example.hello"包名唯一标示一个应用 android:versionCod

项目中几个需要学习的新知识

首先说今天学习的是做一个图书商城的小项目,但是之前学习的好多知识都要使用上面的啦,嘿嘿,顿时感觉有点成就感,因为之前学习的好多的知识点还是蛮碎的,现在可以通过做程序练习练习,这是在还不过的,在小项目做今天学习了很多的新知识,也许以后工作以后我会使用到这些吧,想清晰点的总结一下,以免忘记可以重新在这里找回,好啦总结一下今天学习的新知识. 一.发送邮件激活注册的账号 public static void SendManyEmail(string id, params string[] EamilTo

HashMap与redis在项目中的应用

刚从.net转java三个月,这里记录一下在java项目中使用缓存的学习. 因为项目之前的开发人员离职了,在之前的项目上进行维护,对应从来没有接触过java的小白,只能自己多看多理解多动手了. 这个项目原来是没有用java真正意义上的缓存,而是用的静态的HashMap,但是在性能测试的过程中出现了死锁的过程,因为hashmap是不安全的线程,建议使用ConcurrentHashMap这个和.net的Dictonary很像.因为性能测试不通过,所以后来加了redis,其实java的一级缓存ehca

webpack前端构建工具学习总结(四)之自动化生成项目中的html页面

接续上文:webpack前端构建工具学习总结(三)之webpack.config.js配置文件 1.安装html-webpack-plugin插件,输入命令:npm install html-webpack-plugin --save-dev 2.在webpack.config.js文件中,引入html-webpack-plugin插件 3.输入命令:npm run webpack,编译打包 可以看到在dist/js目录下新生成了一个index.html文件,并且引入了新编译生成的两个js,但此

Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这部分内容需要以下Jar包支持 mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁: MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架: log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录: 修改后的pom.xm

Android的学习之路(二)项目中原生文件的使用场景和文件介绍

1.src文件:java源代码存放目录 2.gen 文件:自动生成所有由android开发工具自动生成的文件,目录中最重要的就是R.java文件,这个文件由android开 发工具自动产生的.android开发工具会自动根据你存放res目录的资源,同步更新修稿R.java文件,正因为 R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java.R.java文件在应用中起到了字典的作 用,它包含了各种资源的ID,通过R.java,应用可以很方便的找到对应资源, 2.1R.java 

项目中走马观花式学习PHP

项目中走马观花式学习PHP 因项目缘故,需要快速补充php知识,个人有asp基础,较熟悉aspx.c#winform编写,故选择了快速阅读PHP相关资料.整理了一下,给大家参考.阅读的资料都是来自网络,我也不说不清作者是谁了,这里要对带我们这些菜鸟飞的前辈和大神们表示感谢.此外和我一样学过asp的朋友请百度一下php和asp语法的不同,对自己帮助很大. 第一部分相关知识补充 一.PHP准备工作 (一)PHP环境搭建(略) 建议使用apm,修改相关的参数即可搭建好环境.详情随便百度一下.... 第

Cocos2dx 学习笔记整理----在项目中使用图片(初)

cocos2dx有多种使用图片的方法,先来个最简单的:用CCSprite直接使用图片. 首先,进入到之前建立的项目,把你将要使用的图片放入到目录下的Resources文件夹里面.项目中以相对路径使用资源皆是以Resources文件夹为根目录参考的. 然后进入到HelloWorldScene.cpp的init方法的最后面加入以下代码: ? 1 2 3 CCSprite * sprite = CCSprite::create("bl_24.png"); sprite->setPosi

Cocos2dx 学习笔记整理----在项目中使用图片(二)

之前了解了一种比较简单的图片的使用方式, 今次来了解稍微复杂一点的图片使用方式,plist+png. 这里要用到之前提到的Texture Packer. Texture Packer是一款图片打包工具,Texture Packer可以将素材打包成我们项目需要的格式. Cocos2dx支持很多种格式, 我们可以将某一种类的或者有共性的图片打包到一个png,然后用plist管理,以节约加载和内存,且显卡支持的纹理尺寸的长宽为2的n次幂,Texture Packer会把纹理整合到次尺寸. 今次我们利用