Avatar billede Slettet bruger
06. august 2006 - 19:14 Der er 7 kommentarer og
1 løsning

String into database!

Fumler lidt rundt med et script som skal sende en bruger et 5-cifret password når denne indtaster sin mail adresse. Scripter finder også passwordet, men problemet er at den ikke vil sætte det ind i databasen. Siger der er en syntaksfejl i INSERT INTO sætningen hvilket jeg tolker som at den ikke vis acceptere strengen.

public static string CreateRandomPassword(int PasswordLength){
      String _allowedChars = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ23456789";
      Byte[] randomBytes = new Byte[PasswordLength];
      RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
      rng.GetBytes(randomBytes);
      char[] chars = new char[PasswordLength];
      int allowedCharCount = _allowedChars.Length;
      for(int i = 0;i<PasswordLength;i++)
      {
      chars[i] = _allowedChars[(int)randomBytes[i] % allowedCharCount];
      }
      return new string(chars);
}
void opretBruger(Object sender, System.Web.UI.WebControls.CommandEventArgs e) {
    string strPassword;
    strPassword = CreateRandomPassword(5);
    string strMailTo;
    strMailTo = elm3.Text;

    MailMessage mail = new MailMessage();
    mail.To = strMailTo;
    mail.From = "Robin-Hansen.dk";
    mail.Subject = "Password til gæstebog";
    mail.BodyFormat = MailFormat.Html;
    mail.Body = "<html><body><img src='http://images/banner1.gif'>XXX";
    try
    {
      SmtpMail.SmtpServer = "mail.tele.dk";
      SmtpMail.Send(mail);
    }
      catch(Exception ex)
    {
    OleDbConnection OurConnection;
    OleDbCommand OurCommand;
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("db/content.mdb")+";");
    OurCommand = new OleDbCommand("INSERT INTO users (navn, mail, password) VALUES (@navn, @mail, @password)", OurConnection);
    OurCommand.Parameters.Add("@navn", OleDbType.VarChar, 50).Value = elm2.Text;
    OurCommand.Parameters.Add("@mail", OleDbType.VarChar, 50).Value = elm3.Text;
    OurCommand.Parameters.Add("@password", OleDbType.VarChar, 5).Value = (strPassword.ToString());<--- Fejl!
    OurConnection.Open();
    OurCommand.ExecuteNonQuery();
    OurConnection.Close();

Kender jeg mig selv ret så er det udformningen af sætningen hvor den er gal, men har prøvet så mange varianter som mulig, uden held! ~:-]
Avatar billede arne_v Ekspert
06. august 2006 - 19:31 #1
prøv:

  OurCommand = new OleDbCommand("INSERT INTO users (navn, mail, password) VALUES (?, ?, ?)", OurConnection);
Avatar billede Slettet bruger
09. august 2006 - 16:33 #2
Nu har jeg uploaded hele scriptet til serveren og det viser sig at intet virker! Sætter intet ind i databasen og den dender heller ingen mail og til allersidst så får jeg heller ingen fejlmeddelse ~:[

Mit script ser således ud:

<%@ Page Language="C#" ContentType="text/html" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb"%>
<%@ import namespace="System.Security.Cryptography"%>
<%@ import namespace="System.Web.Mail"%>
<script runat="server">
public static string CreateRandomPassword(int PasswordLength){
      String _allowedChars = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ23456789";
      Byte[] randomBytes = new Byte[PasswordLength];
      RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
      rng.GetBytes(randomBytes);
      char[] chars = new char[PasswordLength];
      int allowedCharCount = _allowedChars.Length;
      for(int i = 0;i<PasswordLength;i++)
      {
      chars[i] = _allowedChars[(int)randomBytes[i] % allowedCharCount];
      }
      return new string(chars);
}
void opretBruger(Object sender, System.Web.UI.WebControls.CommandEventArgs e) {
    string strPassword;
    strPassword = CreateRandomPassword(5);
    string strMailTo;
    strMailTo = elm3.Text;

    MailMessage mail = new MailMessage();
    mail.To = strMailTo;
    mail.From = "Robin-Hansen.dk";
    mail.Subject = "Password til gæstebog";
    mail.BodyFormat = MailFormat.Html;
    mail.Body = "<html><body><img src='http://images/banner.gif'>XXX";
    try
    {
      SmtpMail.SmtpServer = "localhost";
      SmtpMail.Send(mail);
    }
      catch(Exception ex)
    {
    OleDbConnection OurConnection;
    OleDbCommand OurCommand;
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("db/content.mdb")+";");
    OurCommand = new OleDbCommand("INSERT INTO users (navn, mail, password) VALUES (@navn, @mail, @password)", OurConnection);
    OurCommand.Parameters.Add("@navn", OleDbType.VarChar, 50).Value = elm2.Text;
    OurCommand.Parameters.Add("@mail", OleDbType.VarChar, 50).Value = elm3.Text;
    OurCommand.Parameters.Add("@password", OleDbType.VarChar, 5).Value = (strPassword.ToString()); <-- fejl
    OurConnection.Open();
    OurCommand.ExecuteNonQuery();
    OurConnection.Close();   
    elm2.Text="Navn";
    elm3.Text="Mailadresse";
        }
}   

</script>
Avatar billede Slettet bruger
12. august 2006 - 09:41 #3
Har kigget på scriptet - og det virker tilsyneladend 95% efter hensigten! Eneste problem er at det 5 cifret password som strPassword generer ikke bliver indsat i databasen. Første forslag er jo bare en kopi af allerede eksisternde sqlsætning, dog uden values indsat. Hvilke skal bruges hvis ikke dem jeg allerede har brugt virker?

OurCommand = new OleDbCommand("INSERT INTO users (navn, mail, password) VALUES (?, ?, ?)", OurConnection);
Avatar billede arne_v Ekspert
13. august 2006 - 03:23 #4
prøv med spørgsmålstegnene

----

eller bliver du nødt til at debugge lidt og finde ud af hvor det går galt
Avatar billede arne_v Ekspert
11. september 2006 - 23:28 #5
kommet videre ?
Avatar billede Slettet bruger
14. september 2006 - 11:26 #6
Ups! -ja det er jeg! Men dog ikke med din løsning...

Men smid alligevel et svar for ulejligheden... ~;]
Avatar billede arne_v Ekspert
15. september 2006 - 02:41 #7
nej tak
Avatar billede Slettet bruger
15. september 2006 - 14:16 #8
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Analytiker til Security Operations Center i Cyberdivisionen

Lægemiddelstyrelsen

Løsningsarkitekt

KMD A/S

E2E Tester

Netcompany A/S

Managing Architect