webForumDet fria alternativet

webbchat

ASPur ASP

83 svar · 1 674 visningar · startad av ptr_lks · sida 3 av 5

Frågan, av ptr_lks

Hej, jag jobbar med en hemsida för min sons basketlag 1. är det svårt att "koda" en enkel webchat? Försökt utan framgång googla efter tutorials i ämnet 2. grabbarna är i 12 åå, så de flesta har msn - kan jag på något sätt använda mig av msn? 3. eller är mirc bättre allternativ?

Läs frågan i sin helhet →
Medlem sedan juni 200032 969 inlägg
#41

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")
Medlem sedan juni 2005584 inlägg
#42

@nders skrev:

Var har jag skrivit detta?

Här:

	if (rs.EOF) and (strUser <> "System")  then 
'namnet är ledig

Menar du den kodraden?

Medlem sedan juni 200032 969 inlägg
#43

If (rs.eof) then ----> Om recordsetet rs är tomt gör följande

Medlem sedan juni 2005584 inlägg
#44

@nders skrev:

If (rs.eof) then ----> Om recordsetet rs är tomt gör följande

Det jag vill skriva är:

om inte strUser finns i databasen, så lägg till strUser och strPassw i databasen

Medlem sedan juni 200032 969 inlägg
#45

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?

Medlem sedan juni 2005584 inlägg
#46

@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

Medlem sedan juni 200032 969 inlägg
#47

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å...

Medlem sedan juni 2005584 inlägg
#48

@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?

Medlem sedan juni 200032 969 inlägg
#49

Jag 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.

Medlem sedan juni 2005584 inlägg
#50

@nders skrev:

Jag 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.

det jag vill göra är ju

  1. kolla om formuläret är i fylld
  2. kolla om strUser finns i databasen
  3. om inte så lägg till strUser och StrPassword
  4. tilldela en sessionsvariabel, för att kunna kolla om besökaren är behörig
  5. redirect till chatt.asp
  6. om om 2 är sant så redirect till inloggning.asp
Medlem sedan juni 200032 969 inlägg
#51

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.

Medlem sedan juni 2005584 inlägg
#52

@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

Medlem sedan juni 200032 969 inlägg
#53

Öh

Jaha

Medlem sedan juli 20003 825 inlägg
#54

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! :-)

Medlem sedan juni 2005584 inlägg
#55

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

Medlem sedan juli 20003 825 inlägg
#56

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! :-)

Medlem sedan juni 2005584 inlägg
#57

har hittat felen:

  1. lösenordsfältets namn var fel
  2. session("inloggad") = rs("anvID")
Medlem sedan juni 2005584 inlägg
#58

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.

  1. tablellen ?
  2. tabellfälten
  3. formulärnamnet
Medlem sedan juli 20003 825 inlägg
#59
[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!

Medlem sedan juni 2005584 inlägg
#60

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

%>
141 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)