小错误我无法弄清楚

时间:2014-11-16 23:05:37

标签: c# login scope registration

得到一个小错误,为了爱我,我不知道为什么:

  

错误1当前上下文中不存在名称“email”C:\ Users \ Janco \ Desktop \ New folder \ Espresso Studio的C \ Espresso Studio的C \ Espresso Studio的C \ Form1.cs 135 69 Espresso Studio的C < / p>

错误位于:

        public string HashPass(string password)
        {
            SHA256 sha = new SHA256CryptoServiceProvider();

            //compute hash from the bytes of text
            sha.ComputeHash(ASCIIEncoding.ASCII.GetBytes(password + email));    // Error occurs here at email.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Net;
using System.Net.Mail;
using System.Security.Cryptography;

namespace Espresso_Studio_s_C
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void tabPage2_Click(object sender, EventArgs e)
        {

        }

        private void loginsBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.loginsBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.loginsDataSet);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'loginsDataSet.Logins' table. You can move, or remove it, as needed.
            this.loginsTableAdapter.Fill(this.loginsDataSet.Logins);

        }

        private void registerButton_Click(object sender, EventArgs e)
        {
            AddUser(registerUserName.Text, registerPassword.Text, registerConfirmPassword.Text, registerEmail.Text);
        }





        private void AddUser(string username, string password, string confirmPass, string email)
{
    //Local variables to hold values
    string smtpEmail = smtpUserNameTextBox.Text;
    string smtpPassword = smtpPasswordTextBox.Text;
    int smtpPort = (int)smtpPortNumericUD.Value;
    string smtpAddress = smtpAddressTextBox.Text;

    //Regex for making sure Email is valid
    Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$");
    Match match = regex.Match(email);

    //Loop through Logins Table
    foreach (DataRow row in loginsDataSet.Logins)
    {
        //And look for matching usernames
        if (row.ItemArray[0].Equals(username))
        {
            //If one is found, show message:
            MessageBox.Show("Username already exists");
            return;
        }
    }

    //Confirm pass must equal password.
    if (password != confirmPass)
    {
        MessageBox.Show("Passwords do not match");
    }
    //Password must be at least 8 characters long
    else if (password.Length < 8)
    {
        MessageBox.Show("Password must be at least 8 characters long");
    }
    //If email is NOT valid
    else if (!match.Success)
    {
        MessageBox.Show("Invalid Email");
    }
    //If there is no username
    else if (username == null)
    {
        MessageBox.Show("Must have Username");
    }
    //If all is well, create the new user!
    else
    {
        loginsDataSet.LoginsRow newUserRow = loginsDataSet.Logins.NewLoginsRow();

        string EncryptedPass = HashPass(password);
        newUserRow.Username = username;
        newUserRow.Password = EncryptedPass;
        newUserRow.Email = email;

        loginsDataSet.Logins.Rows.Add(newUserRow);
        registerUserName.Text = String.Empty;
        registerPassword.Text = String.Empty;
        registerConfirmPassword.Text = String.Empty;
        registerEmail.Text = String.Empty;
        MessageBox.Show("Thank you for Registering!");
        if (String.IsNullOrWhiteSpace(smtpEmail) || String.IsNullOrWhiteSpace(smtpPassword) || String.IsNullOrWhiteSpace(smtpAddress) || smtpPort <= 0)
        {
            MessageBox.Show("Email configuration is not set up correctly! \nCannot sent email!");

        }
        else
        {
            SendMessage(email.ToString(), username.ToString(), password.ToString());
        }
    }
}

        public string HashPass(string password)
        {
            SHA256 sha = new SHA256CryptoServiceProvider();

            //compute hash from the bytes of text
            sha.ComputeHash(ASCIIEncoding.ASCII.GetBytes(password + email));    // Error occurs here

            //get hash result after compute it
            byte[] result = sha.Hash;

            StringBuilder strBuilder = new StringBuilder();
            for (int i = 0; i < result.Length; i++)
            {
                //change it into 2 hexadecimal digits
                //for each byte
                strBuilder.Append(result[i].ToString("x2"));
            }

            return strBuilder.ToString();
        }

        public void SendMessage(string ToAddress, string ToName, string password)
        {

            var client = new SmtpClient(smtpAddressTextBox.Text, (int)smtpPortNumericUD.Value)
            {
                Credentials = new NetworkCredential(smtpUserNameTextBox.Text, smtpPasswordTextBox.Text),
                EnableSsl = true
            };
            client.Send(smtpUserNameTextBox.Text, ToAddress, "Thank You!", "Thank you for registering with us today! \n Your username/passwords are: \n \nUsername: "
                                                                        + ToName.ToString() + "\nPassword: " + password.ToString());
        }

        private void loginButton_Click(object sender, EventArgs e)
        {
            //Locals to hold values
            string username = loginUserName.Text;
            string password = HashPass(loginPassword.Text);


            //Loop through database
            foreach (DataRow row in loginsDataSet.Logins)
            {
                //And search for Username and Pass that match
                if (row.ItemArray[0].Equals(username) && row.ItemArray[1].Equals(password))
                {
                    loginUserName.Text = String.Empty;
                    loginPassword.Text = String.Empty;
                    MessageBox.Show("Login Success");
                    break;
                }
                //If not, then show this message.
                else
                {
                    MessageBox.Show("Username/Password incorrect");
                    break;
                }
            }
        } 


    }
}

1 个答案:

答案 0 :(得分:0)

方法AddUser接收变量email。这是一个参数,因此它只是在AddUser方法中可见的局部变量。除非您将变量作为参数传递或将其分配给全局变量(不推荐),否则没有其他方法可以查看或使用它

 private void AddUser(string username, string password, string confirmPass, string email)

所以你需要将该变量传递给HashPass方法

.... in AddUser .....
else
{
    loginsDataSet.LoginsRow newUserRow = loginsDataSet.Logins.NewLoginsRow();
    string EncryptedPass = HashPass(password, email);
    ....
} 
...

public string HashPass(string password, string anEmailAddress)
{
    SHA256 sha = new SHA256CryptoServiceProvider();

    //compute hash from the bytes of text
    sha.ComputeHash(ASCIIEncoding.ASCII.GetBytes(password + anEmailAddress));  

    ....
}