@ndersMedlem sedan juni 200032 969 inlägg
Var har jag skrivit detta?
Här:
if (rs.EOF) and (strUser <> "System") then
'namnet är ledig
//'Skapa sql-sträng för att lägga in en ny användare
strSQL = "INSERT INTO chattare (chattNamn, chattPassw) VALUES ('"_
& strUser & "', '" & strPasw1 & "');"
//'Kör sql-strängen mot databsaen
minCon.Execute(strSQL)
//''Skicka tillbaka användaren till inloggnings-sidan
Response.Redirect "chatt.asp"
Session("Inloggad") = rs("anvID")
@ndersMedlem sedan juni 200032 969 inläggIf (rs.eof) then ----> Om recordsetet rs är tomt gör följande
@ndersMedlem sedan juni 200032 969 inläggJa, det är ju det du gör.
Men på samma gång försöker du skriva ett userid från ett recordset som är tomt till en sessionsvariabel. Hur hade du tänkt att det skulle fungera?
Pptr_lksMedlem sedan juni 2005584 inlägg
@nders skrev:
Ja, det är ju det du gör.
Men på samma gång försöker du skriva ett userid från ett recordset som är tomt till en sessionsvariabel. Hur hade du tänkt att det skulle fungera?
Vet inte... jag är total noob på sessionsvariabler..
Men jag trodde att det var funkis eftersom raden ligger efter det att insertén har körts
@ndersMedlem sedan juni 200032 969 inläggDet har inget med sessionsvariabeln i sig att göra, utan att du försöker göra något med ett värde som skulle kunna ha funnits i ett recordset om nu inte detta varit tomt.
Men jag trodde att det var funkis eftersom raden ligger efter det att insertén har körts
Well, recordsetet är ju precis lika tomt där som innan, så...
Pptr_lksMedlem sedan juni 2005584 inlägg
@nders skrev:
Det har inget med sessionsvariabeln i sig att göra, utan att du försöker göra något med ett värde som skulle kunna ha funnits i ett recordset om nu inte detta varit tomt.
Men jag trodde att det var funkis eftersom raden ligger efter det att insertén har körts
Well, recordsetet är ju precis lika tomt där som innan, så...
Jag får iinte ihop det hela hur det bör se ut :(
Och varför skall redirecten ligga före sessionsvaribeln? fortsätter sidan köras även efter?
@ndersMedlem sedan juni 200032 969 inläggJag vet inte. För du måste berätta för mig vad du hade tänkt att den raden skulle göra där.
Antagligen vill du hämta användar-ID för det konto som precis lades till?
I så fall, ställ följande SQL-fråga och hämta det värdet från recordsetet istället:
SELECT @@IDENTITY AS anvID
, direkt efter att du har exekverat din INSERT.
@ndersMedlem sedan juni 200032 969 inläggOm du inte läst min redigering ovan, så gör det.
Det jag inte förstår är vad du tror / tycker / vill att det är för värde som ska läggas i sessionsvariabeln.
Pptr_lksMedlem sedan juni 2005584 inlägg
@nders skrev:
Om du inte läst min redigering ovan, så gör det.
Det jag inte förstår är vad du tror / tycker / vill att det är för värde som ska läggas i sessionsvariabeln.
ett värde som jag senare kan använda till att kolla om besökaren har behörighet
EEclipseMedlem sedan juli 20003 825 inlägg session("Admin") = "Arne Anka"
***
längst upp på varje sida kan du till exempel skriva: (detta borde även fungera på brinkster)
If session("Admin") = "" THEN response.redirect "loggain.asp"
***
PS! Jag använder session("adminID") för att det ID kan man använda till lite av varje... Du får ju alltid fram ALLA andra värden med hjälp av ID. ID är en bra grej! :-)
Pptr_lksMedlem sedan juni 2005584 inlägg Själva inloggningssidan verkar inte heller funka... Jag blir hela tiden redirectad till error.htm
<!-- #include virtual="/4testasp/includes/dbkoppling.asp" -->
<%
Call dbOpen()
strUser = replace(Request("chattnamn"), "'", "''")
strPasw = replace(Request("txtPassword"), "'", "''")
strSQL = "SELECT * FROM chattare WHERE chattNamn = '"_
& strUser & "' AND chattPassw ='" & strPasw & "';"
Set rs = minCon.execute (strSQL)
if not rs.EOF then
strSQL = "UPDATE chattare SET onLine = 1 WHERE chattNamn ='" & strUser & "';"
minCon.execute strSQL,,128
strSQL = "INSERT INTO chatMess (frChattare, mess, tidpkt) VALUES ("_
& "'System', '<i>" & strUser & "</i> Steg in i chatten', '" & Now & "');"
minCon.execute strSQL,,128
Session("Inloggad") = chattare("anvID")
Call dbClose()
Response.Redirect "chatt.asp"
else
Call dbClose()
Response.Redirect("error.htm")
end if
%>
om jag kör en response.write så får jag
SELECT * FROM chattare WHERE chattNamn = 'peter' AND chattPassw ='';
fast det borde vara
SELECT * FROM chattare WHERE chattNamn = 'peter' AND chattPassw ='0614';
jag använder access2003 och fälttypen är text
EEclipseMedlem sedan juli 20003 825 inlägg Request("txtPassword")
Heter fältet man fyller i samma som det du frågar efter...?
***
Ett tips från en erfaren & nogrann snubbe i sammanhanget är faktiskt ha samma namn på samma fält oavsett om det är som ett värde i ett formulär eller namnet i tabellen i databasen.
Man kan initialt tro att det finns en poäng att inte ha samma men det finns absolut ingen poäng över huvud taget. Det bara rör till det, det är fler namn att hålla ordning på och chansen till fel ökar.
Så... Gör om din kod till:
chattNamn = request("chattNamn")
chattPassw = request("chattPassw")
Trust me! Man fattar av sammanhanget vad det är som avses och det blir aldrig fel.
Bra för dokumentationen också!
***
Sen vill jag faktiskt invända mot dina val av namn. Välj namn som inte är knutet till ett visst projekt eller sammanhang.
Använd inte förkortningar. Förkortningar kan misstolkas. Skriv vad det är du menar. Dina lite längre namn bli i så fall en del av dokumentationen. "strPassword" behövs ju liksom inte förklaras...! :-)
strUser
strPassword
Det är bra att vara kreativ! Men... Val av namn på variabler eller namn i databasen är ett område där man INTE bör låta kreativiteten flöda! :-)
Men visst... jag ska inte hindra dig! :-)
Pptr_lksMedlem sedan juni 2005584 inlägg
Eclipse skrev:
Det är bra att vara kreativ! Men... Val av namn på variabler eller namn i databasen är ett område där man INTE bör låta kreativiteten flöda! :-)
Men visst... jag ska inte hindra dig! :-)
alla tipps tas tacksamt emot av mig som är noob.
- tablellen ?
- tabellfälten
- formulärnamnet
EEclipseMedlem sedan juli 20003 825 inlägg [comments] – kommentarer
1. intID*
2. strName 200, text
3. strRollOver 30, text
4. dteCreated date()
5. dteViewFrom date()
6. dteViewTo date()
7. intSortfield int
8. bolView boolean
intUserID int, for easy to delete old posts
intStoryID int
intCompanyID int
strIcon icon
Jag bifogar dokumentation från ett av mina egna projekt.
Koden ovan skulle kunna vara för vad som helst. Nyheter, produkter, menyval... you name it.
***
På detta viset kan man ta kod från ett projekt och klistra in det i ett annat och det fungerar direkt.
Jag säger inte att det jag gör är bäst. Du hittar säkert din egen stil för att göra så lite arbete som möjligt. Men det är ett sätt att göra.
Med detta mannér kan man få igång en fullt fungerande webbplats på bara 15 minuter!
Pptr_lksMedlem sedan juni 2005584 inlägg uppdateringen av databasen verkar inte funka
på sidan jag skall visa vilka som är online
<!-- #include virtual="/4testasp/includes/dbkoppling.asp" -->
<!-- #include virtual="/4testasp/includes/koll_inloggning.asp" -->
<%
Call PageAccess()
Response.Write "Anvndare online: <BR>"
Call dbOpen()
strSQL = "SELECT chattNamn FROM chattare WHERE onLine = 1"
Set rs = minCon.Execute(strSQL)
if rs.EOF Then
Response.Write("Ingen online")
Else
Do until rs.EOF
Response.Write rs("chattNamn") & "<BR>"
rs.MoveNext
Loop
end if
Call dbClose()
%>
Så visas hela tiden att
Ingen är online
Fast jag borde ha loggats in på default.asp
<!-- #include virtual="/4testasp/includes/dbkoppling.asp" -->
<%
Call dbOpen()
strUser = replace(Request("chattnamn"), "'", "''")
strPasw = replace(Request("pword"), "'", "''")
strSQL = "SELECT * FROM chattare WHERE chattNamn = '"_
& strUser & "' AND chattPassw ='" & strPasw & "';"
Set rs = minCon.execute (strSQL)
if not rs.EOF then
strSQL = "UPDATE chattare SET onLine = 1 WHERE chattNamn ='" & strUser & "';"
minCon.execute strSQL,,128
strSQL = "INSERT INTO chatMess (frChattare, mess, tidpkt) VALUES ("_
& "'System', '<i>" & strUser & "</i> Steg in i chatten', '" & Now & "');"
minCon.execute strSQL,,128
Session("Inloggad") = rs("anvID")
Call dbClose()
Response.Redirect "chatt.htm"
else
Call dbClose()
Response.Redirect("error.htm")
end if
%>