Avatar billede jtc Nybegynder
31. maj 2003 - 18:30 Der er 86 kommentarer og
1 løsning

loginsystem i asp

Er der nogen der kan konstruere et loginsystem

Jeg har en database men en tabel "tblmedlemmer" hvor brugernavn og password er anført for hver person.

Der jeg ønsker er en login side som sender medlemmet til en side hvor hans brugernavn og password er anført hvis brugernavn og password er korekt anført.

Siden som man kommer til skal desuden forudsætte at man har indtastet rigtigt brugernavn og password.

Jeg håber det kan laves hurtigt da jeg skal have det færdigt senest mandag den 02/06-2003
Avatar billede jtc Nybegynder
31. maj 2003 - 19:00 #2
dine henvisninger ser da meget fine ud, men jeg har ikke så meget tid og skal lave en masse så jeg ville spørge dig om du var interesseret i at lave systemet for mig???
Avatar billede somaliomar Praktikant
31. maj 2003 - 19:52 #3
Avatar billede eagleeye Praktikant
31. maj 2003 - 22:09 #4
Her er koden til dit login system, du kan kalde filen her for login.asp
Du kan lige rette koden til så den passer med database fil nanvet og kolonne navne.


<html>
<head><title>Login side</title></head>
<body>
<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set Conn = Server.CreateObject("ADODB.Connection")
  Set rs = Server.CreateObject("ADODB.Recordset")
  Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")
 
  password = Replace(Request.Form("password"),"'","''")
  navn = Replace(Request.Form("navn"),"'","''")
 
  SQL = "SELECT * FROM tblmedlemmer WHERE navn = '" & navn & "' AND pass = '" & password & "'"
  Set rs = Conn.Execute(SQL)
  if NOT rs.EOF then
    Session("login") = "loged_in"
    Session("brugernavn") = rs("navn")
    Session("password") = rs("pass")
  else
    Session("login") = ""
  end if
  rs.Close
  Set rs = nothing
  Conn.Close
  Set Conn = nothing
  if Session("login") = "loged_in" then
    'BRUGER ER LOGGET IND SEND HAM VIDRE TIL EN BESKYTTET FIL

    Response.Redirect("side.asp")
  end if
end if
%>
<center><table>
<form action="" method="post">
<tr><td>Navn:</td><td><input type="text" name="navn"></td></tr>
<tr><td>Password:</td><td><input type="password" name="password"></td></tr>
<tr><td colspan=2><input type="submit" name="Login" value="Login"></td></tr>
</form>
</table></center>
</body>
</html>
Avatar billede eagleeye Praktikant
31. maj 2003 - 22:10 #5
Det som du kan bruge til at tjekke om en bruger er logget ind med er dette:

if Session("login") <> "loged_in" then
    Response.Redirect("login.asp")
else
  'Resten af siden som er beskyttet.

end if
Avatar billede eagleeye Praktikant
31. maj 2003 - 22:12 #6
Den side du om,taler kan du lave sådan her og den skal hedde side.asp


<%
if Session("login") <> "loged_in" then
    Response.Redirect("login.asp")
else
%>
<html><head></head>
<body>
Dit brugernavn er : <%=Session("brugernavn") %><br>
Dit password er : <%=Session("password") %><br>

</body>
</html>
<%
end if
%>
Avatar billede jtc Nybegynder
31. maj 2003 - 22:22 #7
et øjeblik jeg kigger lige på det
Avatar billede jtc Nybegynder
31. maj 2003 - 22:29 #8
Den siger der er fejl i følgende sætning når jeg trykker på login

Set rs = Conn.Execute(SQL)
Avatar billede eagleeye Praktikant
31. maj 2003 - 22:32 #9
Har du rette kolonnenavne til i denne SQL sætning, iøjeblikket er det laves sådan har brugernavet er i kolonnnen navn og passwordet i kolonnen pass.

SQL = "SELECT * FROM tblmedlemmer WHERE navn = '" & navn & "' AND pass = '" & password & "'"
Avatar billede jtc Nybegynder
31. maj 2003 - 22:32 #10
Men det kan jo også være mig der har lavet fejl i ændringerne
Hvis du gidder rette det til så er de to kolonnenavne brugernavn og password
Avatar billede eagleeye Praktikant
31. maj 2003 - 22:33 #11
Så rette du bare denne linje:

SQL = "SELECT * FROM tblmedlemmer WHERE navn = '" & navn & "' AND pass = '" & password & "'"

Til dette:

SQL = "SELECT * FROM tblmedlemmer WHERE brugernavn = '" & navn & "' AND [password] = '" & password & "'"
Avatar billede jtc Nybegynder
31. maj 2003 - 22:37 #12
Jeg har rette det du har skrevet og ikke medtaget [] omkring password

Men der er stadig fejl i
Set rs = Conn.Execute(SQL)
Avatar billede eagleeye Praktikant
31. maj 2003 - 22:37 #13
Hvad skriver den så som fejl?
Avatar billede jtc Nybegynder
31. maj 2003 - 22:38 #14
Microsoft JET Database Engine error '80040e10'

No value given for one or more required parameters.

/login.asp, line 15
Avatar billede eagleeye Praktikant
31. maj 2003 - 22:41 #15
Og du sikker på tabel og konnenavne er rigtige?
Fejlen kommer typsik hvis et kolonnenavn er skrevet forkert.
Avatar billede jtc Nybegynder
31. maj 2003 - 22:41 #16
jeg har også prøvet med andre loginsystemer men min browser skriver hele tiden at der er fejl i den linie
Set rs = Conn.Execute(SQL)
Avatar billede jtc Nybegynder
31. maj 2003 - 22:43 #17
ja okay jeg har skrevet adgangskode som kolonnenavn

men skal disse ikke også ændres
    Session("brugernavn") = rs("navn")
    Session("password") = rs("pass")
Avatar billede eagleeye Praktikant
31. maj 2003 - 22:45 #18
Ja det skal de:

    Session("brugernavn") = rs("brugernavn")
    Session("password") = rs("adgangskode")
Avatar billede jtc Nybegynder
31. maj 2003 - 22:47 #19
og hvordan får jeg side.asp til også at vise brugerens fornavn og efternavn som hedder medlem-fornavn og medlem-efternavn
Avatar billede eagleeye Praktikant
31. maj 2003 - 22:51 #20
Du kan i stedet for disse.

    Session("brugernavn") = rs("brugernavn")
    Session("password") = rs("adgangskode")

Gemme bruger ID (autonummer) på personen i session:

    Session("brugerID") = rs("ID")


Og på side.asp lave en SQL som hender brugerens information fra DBen:


Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")
 
SQL = "SELECT * FROM tblmedlemmer WHERE id = " & Session("brugerID")
Set rs = Conn.Execute(SQL)

Response.write "Navn : " & rs("brugernavn")
Avatar billede jtc Nybegynder
31. maj 2003 - 23:01 #21
ja det fungere jo og virker meget fint men hvad så hvis det skal være muligt for en person at ændre brugernavn og adgangskode, hvordan gør man det
Avatar billede eagleeye Praktikant
31. maj 2003 - 23:10 #22
Så skal du lave en form hvor man kan rette i det. Pas på med ret af brugernavn da man første skal tjekke om en anden har det samme brugernavn inden man ændre det.. Et eks:



<%
if Session("login") <> "loged_in" then
    Response.Redirect("login.asp")
else
%>
<html>
<head></head>
<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
 
  password = Replace(Request.Form("password"),"'","''")
  navn = Replace(Request.Form("navn"),"'","''")
 
  SQL = "UPDATE tblmedlemmer SET adgangskode = '" & password & "' WHERE ID = " & Session("brugerID")
  Conn.Execute(SQL)
  Conn.Close
  Set Conn = nothing
  Response.Redirect(Request.ServerVariables("SCRIPT_NAME"))
end if

SQL = "SELECT * FROM tblmedlemmer WHERE ID = " & Session("brugerID")
Set rs = Conn.Execute(SQL)
%>
<center><table>
<form action="" method="post">
<tr><td>Password:</td><td><input type="text" name="password" value="<%=rs("adgangskode")%>"></td></tr>
<tr><td colspan=2><input type="submit" name="Gem" value="Gem"></td></tr>
</form>
</table></center>
</body>
</html>
<%
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
end if
%>
Avatar billede jtc Nybegynder
31. maj 2003 - 23:18 #23
man kan du lave den sådan den tjekker om brugernavnet er optaget
Avatar billede eagleeye Praktikant
31. maj 2003 - 23:25 #24
Sådan her:

<%
if Session("login") <> "loged_in" then
    Response.Redirect("login.asp")
else
%>
<html>
<head></head>
<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
 
  password = Replace(Request.Form("password"),"'","''")
  navn = Replace(Request.Form("navn"),"'","''")
 
  SQL = "SELECT brugernavn FROM tblmedlemmer WHERE ID <> " & Session("ID") & " AND brugernavn = '" & navn & "'"
  Set rs = Conn.Execute(SQL)
  if rs.EOF then
 
    SQL = "UPDATE tblmedlemmer SET brugernavn = '" & navn & "', adgangskode = '" & password & "' WHERE ID = " & Session("brugerID")
   
    Conn.Execute(SQL)
    indsat = true
  else
    indsat = false
    Response.write "Brugernavnet findes"
  end if
  Conn.Close
  Set Conn = nothing

  if indsat = true then
    Response.Redirect(Request.ServerVariables("SCRIPT_NAME"))
  end if
end if

SQL = "SELECT * FROM tblmedlemmer WHERE ID = " & Session("brugerID")
Set rs = Conn.Execute(SQL)
%>
<center><table>
<form action="" method="post">
<tr><td>Brugernavn:</td><td><input type="text" name="navn" value="<%=rs("brugernavn")%>"></td></tr>
<tr><td>Password:</td><td><input type="text" name="password" value="<%=rs("adgangskode")%>"></td></tr>
<tr><td colspan=2><input type="submit" name="Gem" value="Gem"></td></tr>
</form>
</table></center>
</body>
</html>
<%
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
end if
%>
Avatar billede jtc Nybegynder
31. maj 2003 - 23:32 #25
hvordan linker jeg så til denne side fra side.asp
Avatar billede eagleeye Praktikant
31. maj 2003 - 23:35 #26
Det kan bare være et alemdeligt link

<a href="retdata.asp">Ret min profil.</a>
Avatar billede jtc Nybegynder
31. maj 2003 - 23:41 #27
hvis jeg skriver den kode i bunden af siden side.asp bliver den ikke vist, hvad gør jeg galt???
Avatar billede eagleeye Praktikant
31. maj 2003 - 23:44 #28
Den er måske kommet uden for end if, eks på siden :


<%
if Session("login") <> "loged_in" then
    Response.Redirect("login.asp")
else
%>
<html><head></head>
<body>
<center>Velkommen til din side</center>
<br><br><br>


<a href="retdata.asp">Ret min profil.</a>
</body>
</html>
<%
end if
%>
Avatar billede jtc Nybegynder
31. maj 2003 - 23:48 #29
Undskyld men jeg fandt ud af at det var fordi jeg sad og uploadede den forkerte fil.... klokken er jo ved at blive mange :-)

Men er det også muligt at personen kan gå ind og rette i sin adresse hvis denne hedder medlem-adresse
Avatar billede jtc Nybegynder
31. maj 2003 - 23:49 #30
Og kan denne fejlmeddelelse ikke laves pænere hvis man indtaster et brugernavn som allerede findes

Brugernavnet findes
Microsoft VBScript runtime error '800a01a8'

Object required: 'Conn'

/retdata.asp, line 226
Avatar billede jtc Nybegynder
31. maj 2003 - 23:52 #31
og hvordan laver man et link fra retdata.asp som går tilbage til side.asp
Avatar billede eagleeye Praktikant
31. maj 2003 - 23:56 #32
Du kan selv udvide formen med flere felter som en bruger kan rette i :



<%
if Session("login") <> "loged_in" then
    Response.Redirect("login.asp")
else
%>
<html>
<head></head>
<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
 
  password = Replace(Request.Form("password"),"'","''")
  navn = Replace(Request.Form("navn"),"'","''")
 
  SQL = "SELECT brugernavn FROM tblmedlemmer WHERE ID <> " & Session("ID") & " AND brugernavn = '" & navn & "'"
  Set rs = Conn.Execute(SQL)
  if rs.EOF then
 
    SQL = "UPDATE tblmedlemmer SET brugernavn = '" & navn & "', adgangskode = '" & password & "' WHERE ID = " & Session("brugerID")
   
    Conn.Execute(SQL)
    indsat = true
    Conn.Close
    Set Conn = nothing
  else
    indsat = false
    Response.write "Brugernavnet findes"
  end if

  if indsat = true then
    Response.Redirect(Request.ServerVariables("SCRIPT_NAME"))
  end if
end if

SQL = "SELECT * FROM tblmedlemmer WHERE ID = " & Session("brugerID")
Set rs = Conn.Execute(SQL)
%>
<center><table>
<form action="" method="post">
<tr><td>Brugernavn:</td><td><input type="text" name="navn" value="<%=rs("brugernavn")%>"></td></tr>
<tr><td>Password:</td><td><input type="text" name="password" value="<%=rs("adgangskode")%>"></td></tr>
<tr><td colspan=2><input type="submit" name="Gem" value="Gem"></td></tr>
</form>
</table></center>
</body>
</html>
<%
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
end if
%>
Avatar billede jtc Nybegynder
31. maj 2003 - 23:59 #33
ja okay det kan jeg vist godt finde ud af men hvad med det andet jeg spurgte om
Avatar billede eagleeye Praktikant
01. juni 2003 - 00:00 #34
Prøv den sidste den skulle ikke komme med den fejl hvis navnet findes.
Avatar billede jtc Nybegynder
01. juni 2003 - 00:09 #35
Jeg har nu tilføjet adressen til retdata.asp men hvad har jeg gjort forkert

SQL = "UPDATE tblmedlemmer SET brugernavn = '" & navn & "', medlem-adresse = '" & adresse & "', adgangskode = '" & password & "' WHERE licensnr = " & Session("licensnr")
   
    Conn.Execute(SQL)
Avatar billede jtc Nybegynder
01. juni 2003 - 00:12 #36
den skriver der er fejl i den sidste linie i ovenstående

Microsoft JET Database Engine error '80040e14'

Syntax error in UPDATE statement.

/retdata.asp, line 212
Avatar billede jtc Nybegynder
01. juni 2003 - 00:18 #37
er du der endnu
Avatar billede eagleeye Praktikant
01. juni 2003 - 00:19 #38
Ja, prøv at sætte [] omkring kolonne medlem-adresse da SQL fortolkeren ser det som et minus tegn og ikke bindestreng forsøger at trække de to kolonner fra hinanden:

SQL = "UPDATE tblmedlemmer SET brugernavn = '" & navn & "', [medlem-adresse] = '" & adresse & "', adgangskode = '" & password & "' WHERE licensnr = " & Session("licensnr")
Avatar billede jtc Nybegynder
01. juni 2003 - 00:24 #39
ja du havde endnu engang ret

man kan du ikke dele denne kode op således jeg selv kan bestemme hvor fejlmeddelelsen skal komme

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
 
  password = Replace(Request.Form("password"),"'","''")
  navn = Replace(Request.Form("navn"),"'","''")
 
  SQL = "SELECT brugernavn FROM tblmedlemmer WHERE ID <> " & Session("ID") & " AND brugernavn = '" & navn & "'"
  Set rs = Conn.Execute(SQL)
  if rs.EOF then
 
    SQL = "UPDATE tblmedlemmer SET brugernavn = '" & navn & "', adgangskode = '" & password & "' WHERE ID = " & Session("brugerID")
   
    Conn.Execute(SQL)
    indsat = true
    Conn.Close
    Set Conn = nothing
  else
    indsat = false
    Response.write "Brugernavnet findes"
  end if

  if indsat = true then
    Response.Redirect(Request.ServerVariables("SCRIPT_NAME"))
  end if
end if

SQL = "SELECT * FROM tblmedlemmer WHERE ID = " & Session("brugerID")
Set rs = Conn.Execute(SQL)
%>
Avatar billede eagleeye Praktikant
01. juni 2003 - 00:29 #40
Du kan lave det om så den ikke skriver Brugernavnet findes:

Response.write "Brugernavnet findes"


men gemmer det i en streng i stedet for:

strError = "Brugernavnet findes"



Så kan du hvor som helt skriver strError ud.
Avatar billede jtc Nybegynder
01. juni 2003 - 00:30 #41
okay, men hvad gør jeg så helt konkret
Jeg er ikke så meget inde i asp hvor skal jeg skrive det ene og det andet
Avatar billede eagleeye Praktikant
01. juni 2003 - 00:33 #42
Det kode du har pastede her:


<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
 
  password = Replace(Request.Form("password"),"'","''")
  navn = Replace(Request.Form("navn"),"'","''")
 
  SQL = "SELECT brugernavn FROM tblmedlemmer WHERE ID <> " & Session("ID") & " AND brugernavn = '" & navn & "'"
  Set rs = Conn.Execute(SQL)
  if rs.EOF then
 
    SQL = "UPDATE tblmedlemmer SET brugernavn = '" & navn & "', adgangskode = '" & password & "' WHERE ID = " & Session("brugerID")
   
    Conn.Execute(SQL)
    indsat = true
    Conn.Close
    Set Conn = nothing
  else
    indsat = false
    strError "Brugernavnet findes"
  end if

  if indsat = true then
    Response.Redirect(Request.ServerVariables("SCRIPT_NAME"))
  end if
end if

SQL = "SELECT * FROM tblmedlemmer WHERE ID = " & Session("brugerID")
Set rs = Conn.Execute(SQL)
%>



Så kan du andet sted tjekke på hvis strError <> "" så kan du udksrive den eller bare udskrive den:

if strError <> "" then Response.write strError
Avatar billede jtc Nybegynder
01. juni 2003 - 00:44 #43
hvis jeg bare udskifter Response.write "Brugernavnet findes"
med strError "Brugernavnet findes"
kommer der fejl i denne linie
Avatar billede eagleeye Praktikant
01. juni 2003 - 00:46 #44
hov jeg har glemt =  ;)

strError = "Brugernavnet findes"
Avatar billede jtc Nybegynder
01. juni 2003 - 00:53 #45
okay...har du en mail så jeg kan kontakte dig og få dig til at svarer på et spørgsmål...??
Hver gang jeg får fat i dig går det nemlig strygende let i forhold til de andre brugere på eksperten.dk
Avatar billede choco Nybegynder
01. juni 2003 - 10:38 #46
undskyld jeg blander mig lidt men det så så spændene ud der her så jeg fulte bare med men det jeg ikke kan forstå er hvorfor jeg får denne fejl

Fejltype:
Der opstod en Microsoft JScript-kompileringsfejl (0x800A03ED)
Tegnet '(' var ventet
/login1.asp, line 5, column 3
if Session("login") <> "loged_in" then
Avatar billede jtc Nybegynder
01. juni 2003 - 10:45 #47
Hej choco
min login.asp kom til sidst til at se sådan ud hvis det kan hjælpe dig

<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set Conn = Server.CreateObject("ADODB.Connection")
  Set rs = Server.CreateObject("ADODB.Recordset")
  Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/bowling.mdb")
 
  password = Replace(Request.Form("password"),"'","''")
  navn = Replace(Request.Form("navn"),"'","''")
 
  SQL = "SELECT * FROM tblmedlemmer WHERE brugernavn = '" & navn & "' AND adgangskode = '" & password & "'"
  Set rs = Conn.Execute(SQL)
  if NOT rs.EOF then
    Session("login") = "loged_in"
    Session("licensnr") = rs("licensnr")
  else
    Session("login") = ""
  end if
  rs.Close
  Set rs = nothing
  Conn.Close
  Set Conn = nothing
  if Session("login") = "loged_in" then
    'BRUGER ER LOGGET IND SEND HAM VIDRE TIL EN BESKYTTET FIL

    Response.Redirect("side.asp")
  end if
end if
%>
          <form action="" method="post">
<center>
        <table width="230" border="0" align="center">
          <tr><td colspan="2"><strong><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><img src="pic/user.gif" width="23" height="18">
              Login til medlemssider<br>
              <img src="pic/moerkeblaa.gif" width="250" height="2"></font></strong></td>
          </tr>
          <tr>
            <td width="96"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Brugernavn:</font></td>
            <td width="151"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
              <input name="navn" type="text" size="21">
              </font></td>
          </tr>
          <tr>
            <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Adgangskode:</font></td>
            <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
              <input name="password" type="password" size="21">
              </font></td>
          </tr>
          <tr>
            <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&nbsp;</font></td>
            <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
              <input name="login" type="submit" class="knap" value="Login">
              </font></td>
          </tr>
        </table>
        </center>
        </form>
Avatar billede choco Nybegynder
01. juni 2003 - 10:55 #48
tjaa... men jeg får stadig samme fejl ander ikke om det kan være inde i min database at jeg ikke har fået lavet de rigtig felter.

denne fejl : column 3

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
Avatar billede jtc Nybegynder
01. juni 2003 - 10:56 #49
og husk da også lige at siderne hedder
login.asp
side.asp
retdata.asp
Avatar billede jtc Nybegynder
01. juni 2003 - 10:57 #50
men denne kode skal jo ikke være på login.asp

if Session("login") <> "loged_in" then
    Response.Redirect("login.asp")
else
  'Resten af siden som er beskyttet.

end if
Avatar billede choco Nybegynder
01. juni 2003 - 11:00 #51
okay nu er jeg ca med... jeg har kun to sider :login.asp , side.asp

Men hvad skal der stå i side.asp og hvad skal der stå i retdata.asp
Avatar billede jtc Nybegynder
01. juni 2003 - 11:07 #52
side.asp

<%
if Session("login") <> "loged_in" then
    Response.Redirect("login.asp")
else
%>
      <%
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/bowling.mdb")
%>
      <% 
SQL = "SELECT * FROM qryoversigt WHERE licensnr = " & Session("licensnr")
Set rs = Conn.Execute(SQL)
%>
      <%
Response.write "Navn : " & rs("navn")
%>
      <br>
      <% 
SQL = "SELECT * FROM tblmedlemmer WHERE licensnr = " & Session("licensnr")
Set rs = Conn.Execute(SQL)
%>
      <%
Response.write "adresse : " & rs("medlem-adresse")
%>
      <p><a href="retdata.asp">Ret min profil</a></p>
      <%
end if
%>


retdata.asp

<%
if Session("login") <> "loged_in" then
    Response.Redirect("login.asp")
else
%>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/bowling.mdb")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
 
  password = Replace(Request.Form("password"),"'","''")
  navn = Replace(Request.Form("navn"),"'","''")
  adresse = Replace(Request.Form("adresse"),"'","''")
 
  SQL = "SELECT brugernavn FROM tblmedlemmer WHERE licensnr <> " & Session("licensnr") & " AND brugernavn = '" & navn & "'"
  Set rs = Conn.Execute(SQL)
  if rs.EOF then
 
    SQL = "UPDATE tblmedlemmer SET brugernavn = '" & navn & "', adgangskode = '" & password & "', [medlem-adresse] = '" & adresse & "' WHERE licensnr = " & Session("licensnr")
   
    Conn.Execute(SQL)
    indsat = true
    Conn.Close
    Set Conn = nothing
  else
    indsat = false
    strError = "Brugernavnet findes"
  end if

  if indsat = true then
    Response.Redirect(Request.ServerVariables("SCRIPT_NAME"))
  end if
end if
   
SQL = "SELECT * FROM tblmedlemmer WHERE licensnr = " & Session("licensnr")
Set rs = Conn.Execute(SQL)
%>
<center>
        <table>
          <form action="" method="post">
            <tr>
              <td>Brugernavn:</td>
              <td><input type="text" name="navn" value="<%=rs("brugernavn")%>"></td>
            </tr>
            <tr>
              <td>Password:</td>
              <td><input type="text" name="password" value="<%=rs("adgangskode")%>"></td>
            </tr>
            <tr>
              <td>adresse</td>
              <td><input type="text" name="adresse" value="<%=rs("medlem-adresse")%>"></td>
            </tr>
            <tr>
              <td colspan=2><input type="submit" name="Gem" value="Gem"></td>
            </tr>
          </form>
        </table>
        <% if strError <> "" then Response.write strError %><br>
        <p><a href="side.asp">Tilbage til profil</a></p></center>

<%
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
end if
%>
Avatar billede choco Nybegynder
01. juni 2003 - 11:13 #53
okay hvad skal så stå i retdata.asp
Avatar billede jtc Nybegynder
01. juni 2003 - 11:18 #54
det har jeg skrevet i ovenstående den første halvdel er i side.asp og den anden halvdel i retdata.asp

Men du må selv rette tabelnavne og felter til efter din egen database
Avatar billede choco Nybegynder
01. juni 2003 - 11:25 #55
okay... men jeg får stadig den fejl der heder

Fejltype:
Der opstod en Microsoft JScript-kompileringsfejl (0x800A03ED)
Tegnet '(' var ventet
/login.asp, line 4, column 3
if Session("login") <> "loged_in" then


kan bare ikke forstå hvorfor jeg gør det
Avatar billede choco Nybegynder
01. juni 2003 - 11:51 #56
kan det have noget med at der er noget jeg ikke har ændret så det passer til mig.... nu kan det godt være jeg spørger lidt dumt men er ikke helt sikker på vilken en af dem jeg skal åbne, om det er login.asp
Avatar billede jtc Nybegynder
01. juni 2003 - 11:56 #57
Det er login.asp du skal logge ind på og når du så trykker på login bliver du sendt videre til side.asp
Avatar billede choco Nybegynder
01. juni 2003 - 11:59 #58
okay... men ved du ikke hvorfor jeg får den fejl som jeg får når jeg prøver at åbne login.asp

jeg åbner sårdan her : 192.168.1.6/login.asp

kan det være fordi der er noget jeg mangler at ratte.
Avatar billede jtc Nybegynder
01. juni 2003 - 12:07 #59
Jeg ved ikke så meget om asp, så du må nok spørge en anden
eagleeye har i hvert fald styr på det der asp- halløj
Avatar billede choco Nybegynder
01. juni 2003 - 12:38 #60
ja det ved jeg men hvordan får jeg fat i ham han kommer jo ikke her ind mere.
Avatar billede eagleeye Praktikant
01. juni 2003 - 22:53 #61
Jo et logud link. Du kan evt lave det sådan at den kalder login siden:

<a href="login.asp?mode=logud">Log ud</a>




Så på siden som hedder login.asp laver du dette kode i toppen af filen:


if Request.Querystring("mode") = "logud" then
  Session("login") = ""
  Session.Abandon
  'Det er nødvendig at lave redirect eller slettes session ikke helt
  Response.Redirect("login.asp")
end if
Avatar billede jtc Nybegynder
01. juni 2003 - 22:59 #62
jeg prøver lige så vent lige et par minuter
Avatar billede jtc Nybegynder
01. juni 2003 - 23:04 #63
Hvis jeg logger ud kommer jeg til login.asp og hvis jeg så skriver side.asp i adressefeltet kommer jeg alligevel ind på denne side

Når jeg er logget ud skulle jeg jo ikke kunne gå ind på denne side
Avatar billede eagleeye Praktikant
01. juni 2003 - 23:06 #64
Hvad hvis du trykker F5 (eller ALT-F5) for at relaod  siden side.asp
Avatar billede jtc Nybegynder
01. juni 2003 - 23:10 #65
ja så går den godt nok ud på login.asp som den skal når man ikke er logget ind ved tryk på f5
Men det er jo ikke særlig smart man skal trykke f5 før det virker, kan man ikke gøre noget så det sker automatisk
Avatar billede jtc Nybegynder
01. juni 2003 - 23:11 #66
Kan du desuden fortælle mig hvordan det virker når en klient sender en request på en asp-fil
Jeg skal nemlig til eksamen i IT på tirsdag og skal lige hører om det jeg har skrevet nu også er rigtigt
Avatar billede eagleeye Praktikant
01. juni 2003 - 23:16 #67
Så det nok fordi siden ligger i cachen på PCen. Prøv at sætte dette i mellem <head> og </head> på side.asp
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">


Hvordan tænker du på. Har du kigget på denne side:?
http://www.html.dk/tutorials/asp/lektion1.asp
Avatar billede eagleeye Praktikant
01. juni 2003 - 23:18 #68
Samt denne hvor datoen er ældren end dags dato.:

<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">
Avatar billede jtc Nybegynder
01. juni 2003 - 23:20 #69
ja jeg har kigget på den side og det er det jeg har skrevet, men kan du tilføje mere så ville det være fint
Avatar billede jtc Nybegynder
01. juni 2003 - 23:26 #70
det hjalp ikke at jeg skrev

<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">

i head
Avatar billede eagleeye Praktikant
01. juni 2003 - 23:29 #71
Det er fordi den siden side.asp er loaded i cachen og hvis man skriver det så vise den side den har loaded i cachen. Eftersom det den går ud på login siden hvis man trykker F5.


Nej jeg har ikke så meget at tilføje. Det vigtige er vel man kan lave dynamiske sider uafhængigt af hvilket OS en surfer har da det er serveren som genere HTML-kode som output.
Avatar billede jtc Nybegynder
01. juni 2003 - 23:34 #72
så jeg kan altså ikke gøre noget ved det heller hvad???

Men en mac kan da ikke vise asp-filer så vidt jeg har forstået?

Kan man sige at webserveren sender vbscriptet gennem databasen hvorefter vbscriptet fortolkes af asp hvorefter en htmlkode sendes til serveren som så sender htmlfilen videre til klienten
Avatar billede eagleeye Praktikant
01. juni 2003 - 23:39 #73
Browseren requester en side fra serveren  x.asp

Serveren sender så filen gennem ASP-fortolkeren da det er en .asp fil. Det som kommer ud af ASP-fortolkeren er ren HTML-koden som senden tilbage til klienten. Så i princippet er der for browseren ingen forskel på indholdet af en ASP fil eller HTML fil. Forskellen er den ASP filen har først være gennem serveren ASP fortolker.


Denne:
Men en mac kan da ikke vise asp-filer så vidt jeg har forstået?

Det er lige meget hvilekn OS en bruger har når siden ses gennem en browser. Tror du ikke det skal være at man på en MAC ikke har mulighed for at køre en web-server som har indbygget ASP fortolker?
Avatar billede jtc Nybegynder
01. juni 2003 - 23:42 #74
okay

Men hvor kommer vbscriptet så ind i billedet??

Og kunne det lade sig gøre at man ikke skulle trykke f5???
Avatar billede eagleeye Praktikant
01. juni 2003 - 23:45 #75
VBScriptet er det sprogt ASP koden kan være skrevet i.

ASP kan nemlig skrives i enten VBScript, JavaScript, og vist nok også PERL.


Andet bud så prøv med denne linje i toppen:

<% Response.Expires = 0 %>
Avatar billede jtc Nybegynder
01. juni 2003 - 23:46 #76
men hvornår skabes der kontakt til databasen
Avatar billede eagleeye Praktikant
01. juni 2003 - 23:47 #77
Og VBscriptet er mellem <%  og  %>  og man kan "starte" og "stoppe" for efter behov:

HTML KODE
<%
ASP KODE / VBscript
%>
HTML KODE
<%
ASP KODE / VBscript
%>
Avatar billede jtc Nybegynder
01. juni 2003 - 23:48 #78
det virkede heller ikke, men kan man ikke skrive et eller andet i disse linier
<%
if Session("login") <> "loged_in" then
    Response.Redirect("login.asp")
else
%>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/bowling.mdb")
%>
Avatar billede eagleeye Praktikant
01. juni 2003 - 23:49 #79
Det gør der kun hvis koden gør det.


I det kode du har ovenfor skabes kontakten til DB her:

Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/bowling.mdb")
Avatar billede eagleeye Praktikant
01. juni 2003 - 23:50 #80
Så det din browser der er sat op til ikke at spørge efter en ny side.
Avatar billede jtc Nybegynder
01. juni 2003 - 23:50 #81
men er det ikke vbscriptet der skaber forbindelsen til databasen?

og er det så i asp-fortolkeren forbindelsen til databasen skabes
Avatar billede eagleeye Praktikant
01. juni 2003 - 23:51 #82
Ja det er fortolkeren som afvikler koden og dermed skaber forbindelse til DB'en.
Avatar billede jtc Nybegynder
01. juni 2003 - 23:52 #83
men kan du ikke skrive noget i denne kode så man hvis mode= logud ikke kan komme ind på siden

<%
if Session("login") <> "loged_in" then
    Response.Redirect("login.asp")
else
%>
Avatar billede jtc Nybegynder
01. juni 2003 - 23:54 #84
men så tror jeg, jeg er ved at have styr på det med vbscript
Avatar billede eagleeye Praktikant
01. juni 2003 - 23:57 #85
Nej for det bliver jo ikke afvilket når browseren har en kopi af siden. Browseren har jo en HTML udgave og ser jo ikke:
<%
if Session("login") <> "loged_in" then
    Response.Redirect("login.asp")
else
%>

Den ser bare siden ligger i cachen og så viser den det indhold. Browseren skulle request siden igen fra serveren, og det sker først når du trykke F5. Jeg har kommet med de forslag som skulle gøre browseren automatisk spurgte om siden fra serveren.
Avatar billede eagleeye Praktikant
02. juni 2003 - 00:00 #86
Prøv i IE at gå ind i Tools->Internet Options... -> Generel -> Settings...
Slå "Check for newer version of this page" over på "Every visit to the page"
Avatar billede jtc Nybegynder
02. juni 2003 - 00:02 #87
okay men så siger jeg tak for hjælpen

Men jeg kommer nok til at kontakt dig endnu engang i forbindelse med nogle billeder og et nyhedsscript

Men tak for hjælpen indtil videre
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
Kurser inden for grundlæggende programmering

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