Hej har problem med att få till en ffunktion som lägger till en länk med id-värdet den som registrerat sig fått i mysql-databasen. Hej Johan, här bör du nog passa dig lite. Ok. tack för tipset. Har en random funktion som genererar ett slumpat lösenord. Borde inte det räcka?Aktiveringslänk i mailutskick vid registrering. (C#)
Försöker hämta värdet på detta sätt, men det funkar ej:
<code>
objConn.Open();
objCommand = new OdbcCommand("SELECT id FROM users where username=1", objConn);
objRdr = objCommand.ExecuteReader();
while (objRdr.Read()) {
activate.Text= objRdr["id"];
}
objRdr.Close();
objConn.Close();
</code>
Hela koden för mailutskicket:
<code>
objCommand = new OdbcCommand("INSERT INTO users (type, username, name, surename, email, password, city, sex, birthdate) values(?, ?, ?, ?, ?, ?, ?, ?, ?)", objConn);
objCommand.Parameters.Add(new OdbcParameter("", 1));
objCommand.Parameters.Add(new OdbcParameter("", username.Text));
objCommand.Parameters.Add(new OdbcParameter("", name.Text));
objCommand.Parameters.Add(new OdbcParameter("", surename.Text));
objCommand.Parameters.Add(new OdbcParameter("", email.Text));
objCommand.Parameters.Add(new OdbcParameter("", newpass.Text));
objCommand.Parameters.Add("@city", stader.SelectedItem.Value);
objCommand.Parameters.Add("@sex", sex.SelectedItem.Value);
objCommand.Parameters.Add("@birthdate", date_form.Text);
objConn.Open();
objCommand.ExecuteNonQuery();
objConn.Close();
objConn.Open();
objCommand = new OdbcCommand("SELECT id FROM users where username=1", objConn);
objRdr = objCommand.ExecuteReader();
while (objRdr.Read()) {
activate.Text= objRdr["id"];
}
objRdr.Close();
objConn.Close();
// make sure we use the local SMTP server
SmtpMail.SmtpServer = "smtp.XXXXXXXX.se";
MailMessage objEmail = new MailMessage();
objEmail.To = email.Text;
objEmail.From = "info@XXXXXXXXX.se";
objEmail.Cc = "info@XXXXXXXXX.se";
objEmail.Subject = "Inloggningsuppgifter och aktiveringslänk";
objEmail.Body = "Välkommen som medlem! "+ "\r\n\r\n" + "Dina
inloggningsuppgifter är:\r\n\r\nAnvändarnamn: " + username.Text + "\r\nLösenord: " +newpass.Text
+ "\r\n\r\n\r\nInnan du kan logga in måste du aktivera ditt användarkonto.\r\nBesök webbadressen
nedan för att aktivera ditt konto:\r\nhttp://www.XXXXXXXXXX.se/activate.aspx?" + activate.Text;
objEmail.Priority = MailPriority.High;
</code>Sv: Aktiveringslänk i mailutskick vid registrering. (C#)
Betänk att jag skriver activate.aspx?id = 88 och håller på så ett tag, då slår jag på mailen för massor av användare. Det du måste göra först är faktiskt att kryptera en sträng som gör det mer säkert och inte kan "tolkas" och skrivas av andra personer.
Så mitt förslag är att titta lite på MD5 kryptering som finns i .Net innan du fortsätter ditt arbete.Sv:Aktiveringslänk i mailutskick vid registrering. (C#)
Lösenordet inehåller följande tecken: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
Kan själv välja hur många tecken. Något sådant borde ju funka vid aktiveringen också eller?
Har löst det mesta andra som jag hade problem med annars vad gäller denna koden. Men har en fråga:
I koden nedan så har jag ju "objRdr.Close();" och "objConn.Close();" längst ner efter "Response.Redirect". Det är kanske ingen höjdare. Kopplingen till databasen kommer då inte att stängas om det blir så att man skickas till en annan sida, eller? Hur skall jag fixa så att den stängs även om man skickas iväg till en annan sida?
<code>
objConn.Open();
objCommand = new OdbcCommand("SELECT id FROM users where username = ?", objConn);
objCommand.Parameters.Add(new OdbcParameter("?", username2.Text));
objRdr = objCommand.ExecuteReader();
while (objRdr.Read()) {
string UserID = objRdr["id"].ToString();
// make sure we use the local SMTP server
SmtpMail.SmtpServer = "smtp.XXX.se";
MailMessage objEmail = new MailMessage();
objEmail.To = email.Text;
objEmail.From = "info@XXX.se";
objEmail.Cc = "info@XXX.se";
objEmail.Subject = "Inloggningsuppgifter och aktiveringslänk";
objEmail.Body = "Välkommen som medlem! "+ "\r\n\r\n" + "Dina inloggningsuppgifter är:\r\n******************************\r\nAnvändarnamn: " + username2.Text + "\r\nLösenord: " +newpass2.Text + "\r\n******************************\r\n\r\nInnan du kan logga in på sidan måste du aktivera ditt användarkonto.\r\nBesök webbadressen nedan för att aktivera ditt konto:\r\nhttp://www.XXXXXXXXXXXXX.se/activate.aspx?" + objRdr["id"];
objEmail.Priority = MailPriority.High;
try{
SmtpMail.Send(objEmail);
Response.Redirect("activate.aspx?id=" + UserID);
}
catch (Exception exc){
Response.Write("Send failure: "+ exc.ToString());
}
}
objRdr.Close();
objConn.Close();
</code>