01. april 2001 - 19:05Der er
42 kommentarer og 1 løsning
Check om det findes i db !
Hej Eksperter !
Jeg har noget kode som skriver til en db, og det virker fint nok. Her kommer mit spørgsmål...hvordan kan man lave en funktion der tjekker om det angivne brugernavn allerede findes i db, og hvis det findes i db, skal den ikke skrive, men komme med en fejlmeddelelse. Hvordan gør man det ?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
open (KODEFIL, \"$filnavn\"); @indhold = <KODEFIL>; close (KODEFIL);
foreach $linje (@indhold) {
@stump = split(/\\:/, $linje); $filnavn = \"$stump[0]\"; $filkode = \"$stump[1]\"; if (($krypkode eq $filkode) && ( $filnavn eq $bruger)) { print \"Location: $destination\\n\\n\"; exit; } } print (\"Content-type: text/html\\n\\n\"); print \"<html><head><title>Fejl i login</title></head><body>\"; print \"<TABLE width=66%><TR><TD>\"; print \"Det var nærmest noget skidt, for din kombination af password og kodeord blev ikke genkendt.<BR><BR>\"; print \"Der er vist ikke andet for end at prøve igen. Hvis det absolut ikke vil lykkes kan du kontakte webmaster\"; print \"</TD></TR></TABLE>\"; print \"</body></html>\"; exit;
open (KODEFIL, \"$filnavn\"); @indhold = <KODEFIL>; close (KODEFIL);
foreach $linje (@indhold) {
@stump = split(/\\:/, $linje); $filnavn = \"$stump[0]\"; $filkode = \"$stump[1]\"; if (($krypkode eq $filkode) && ( $filnavn eq $bruger)) { print \"Location: $destination\\n\\n\"; exit; } } print (\"Content-type: text/html\\n\\n\"); print \"<html><head><title>Fejl i login</title></head><body>\"; print \"<TABLE width=66%><TR><TD>\"; print \"Det var nærmest noget skidt, for din kombination af password og kodeord blev ikke genkendt.<BR><BR>\"; print \"Der er vist ikke andet for end at prøve igen. Hvis det absolut ikke vil lykkes kan du kontakte webmaster\"; print \"</TD></TR></TABLE>\"; print \"</body></html>\"; exit;
Den skal ikke tjekke om brugernavnet _ikke_ findes, den skal abre tjekke om brugernavnet er taget eller ej...hvis det er taget, skal den som sagt ikke skrive til databasen, men komme med en besked om at brugernavnet er taget.
If Not(Session(\"Checked\")) then \'Henter login info fra cookie på user computer. Username = Request.Cookies(\"LoginInfo\")(\"Username\") Password = Request.Cookies(\"LoginInfo\")(\"Password\")
\'Slår op i databasen efter brugernavnet fra cookien SQL = \"SELECT * FROM TblPasswords WHERE Username=\'\" & Username & \"\'\" Set dbRs = dbCon.Execute(SQL)
if dbRs.BOF AND dbRs.EOF then \'Brugernavnet blev ikke fundet i databasen ErrorMessage = \"<i>You\'ve typed a wrong username or you have not logged in before from this computer.</i>\" Rejected = True elseif not dbRs(\"Password\") = password then \'Brugernavnet var der, men password forkert ErrorMessage = \"<i>You\'ve typed a wrong password.</i>\" Rejected = True else \'Alt var fint, gemmer informationen i variabler, og viser almindelig side RealName = dbRs(\"RealName\") Username = dbRs(\"Username\") Password = dbRs(\"Password\") Rejected = False Session(\"Checked\") = True end if
Hmm kan dette hjælpe dig? - ellers prøv at poste lidt kode så skal jeg flette noget sammen til dig.. <% strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & server.mappath(\"Din_DB.mdb\") Set Conn = Server.CreateObject(\"ADODB.Connection\") Conn.Open strDSN
SQL = \"Select * FROM TABLE Set RS = conn.Execute(SQL) RS.MoveFirst
Do While NOT RS.EOF
If RS(\"brugernavn\") = Request.Form(\"felt\") then Response.Redirect(\"Din_side.asp?svar=findes\") end if RS.MoveNext Loop
SQL = \"select * from bruger\" Set RS = conn.Execute(SQL) RS.MoveFirst
Do While NOT RS.EOF If RS(\"brugernavn\") = Session(\"brugernavn\") then Response.write(\"<meta http-equiv=\'refresh\' content=\'0;URL=opret.asp?bruger=findes\'>\") If Session(\"brugernavn\") =\"\" then Response.write(\"<meta http-equiv=\'refresh\' content=\'0;URL=opret.asp\'>\") If Session(\"password\") =\"\" then Response.write(\"<meta http-equiv=\'refresh\' content=\'0;URL=opret.asp\'>\") RS.MoveNext Loop Response.write(\"<meta http-equiv=\'refresh\' content=\'0;URL=opret.asp?mode=bruger?id=opret\'>\") %> <% end if %> <% if mode = \"bruger?id=doopret\" then %> <%
Conn.Close set Conn = Nothing Response.Redirect(\"login.asp\") %> <% end if %> <% if mode = \"bruger?id=opret\" then %> <HTML> <HEAD> <!-- Minus AutoDato --> <TITLE>Brugersystem v1,2</TITLE> <META NAME=\"Generator\" CONTENT=\"Stone\'s WebWriter 3\"> <SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\"> function validate(opret) {
if (opret.navn.value == \"\") { alert(\"Husk at skrive dit navn.\"); document.opret.navn.focus(); return false; } else { if (opret.nickname.value == \"\") { alert(\"Husk at skrive dit nickname\"); document.opret.nickname.focus(); return false; } else { if (opret.alder.value == \"\") { alert(\"Husk at skrive din alder\"); document.opret.alder.focus(); return false; } else { if (opret.email.value == \"\") { alert(\"Husk at skrive din e-mail\"); document.opret.email.focus(); return false; } else { if (opret.icq.value == \"\") { alert(\"Der skal stå noget i ICQ feltet.\"); document.opret.om.focus(); return false; } else { if (opret.om.value == \"\") { alert(\"Der skal stå noget om dig.\"); document.opret.om.focus(); return false; } } } } } } return true; }
Det er vidst dette stykke af det som du skal bruge: Do While NOT RS.EOF If RS(\"brugernavn\") = Session(\"brugernavn\") then Response.write(\"<meta http-equiv=\'refresh\' content=\'0;URL=opret.asp?bruger=findes\'>\") If Session(\"brugernavn\") =\"\" then Response.write(\"<meta http-equiv=\'refresh\' content=\'0;URL=opret.asp\'>\") If Session(\"password\") =\"\" then Response.write(\"<meta http-equiv=\'refresh\' content=\'0;URL=opret.asp\'>\") RS.MoveNext Loop Response.write(\"<meta http-equiv=\'refresh\' content=\'0;URL=opret.asp?mode=bruger?id=opret\'>\") %> <% end if %> <% if mode = \"bruger?id=doopret\" then %> <%
Hvis du skal bruge det i NS skal du nok ikke bruge Response.write(\"<meta http-equiv=\'refresh\' content=\'0;URL=opret.asp?mode=bruger?id=opret\'>\") Men derimod response.redirect (\"opret.asp?mode=bruger?id=opret\")
dette stammer fra et login-script, men hele idéen er den samme; findes 0 poster sendes man et sted hen - findes 1 (og kun 1) post, sendes man et andet sted hen!
Sql = \"Select Count(*) as Found from brugere where (brugernavn = \'\" & Request.form(\"brugernavn\") & \"\')\" Set Login = Rs.Execute(Sql) if Login(\"Found\") = 0 then Session(\"login\") = 0 Response.Redirect \"login.asp\" else Session(\"Login\") = 1 Session(\"password-session\") = Request(\"brugernavn\") Response.Redirect \"default.asp\" end if
Er der virkelig slet ingen der kan lave en funktion der tjekker om brugernavnet er i db\'en, og hvis brugernavnet er i db\' skal den ikke skrive til db\'en , men komme med en besked ??!!
OKi denne tjekker din DB om brugernavn eksistere hvis det gør sender det dig til den side du kalder Din_side.asp hvor du kalder variablen \"Findes\" i den kan du så skrive hvad du vil.
If RS(\"brugernavn\") = Request.Form(\"felt\") then Response.Redirect(\"Din_side.asp?svar=findes\") end if Mvh Jack!!
advokaten -> ja - den redirecter - jeg ved jo ikke præcis hvad det skal - og jeg skrev også at det var en del af et login-script... derfor skal det jo omskrives lidt.
men det lyder da til at du trods alt kan få det til at virke! så er det bare lidt omskrivning så det passer til DIT behov!
Den side hvor du indtaster oplysningerne, sender du til en anden side for at tjekke, hvis ikke det er taget sender den side den så vidre til den endelige side, som skriver til din db *S*
Så vil jeg gøre det noget der ligner sådan her: default.asp er den side som du har taget din kode fra så hedder den noget andet så ret default.asp til det.
Nu gider jeg sq ikke at bøvle mere med det... Fordi alle de koder i har skrevet virker ikke, og så finder jeg ud af det selv....men hvis der sidder en der ude, som har en ORDENLIG kode, så bare sig til !
advokaten >> der ville nok også være lidt større respons, hvis der var lidt mere villighed til at modtage hjælp!
Synes godt om
Slettet bruger
03. april 2001 - 10:28#43
Advokaten: Så må du fefinere hvad du mener med at et brugernavn er \"taget\"... Så vidt jeg forstår betyder det, at der er oprettet en bruger med det ønskede navn i databasen.
Ellers må du udtrykke dig klarere.. der blev faktisk svaret til rigelighed på det du spurgte om. (Hvad du så MENTE ved du kun selv)
Synes godt om
Ny brugerNybegynder
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.