webForumDet fria alternativet
Logga in / Bli medlem

Databas/Sql/Session

ASP

23 svar · 361 visningar · startad av cHeMiCaL-X

Medlem sedan okt. 2001208 inlägg
Trådstart#1

Hej jag har ett problem.. håller på med ett script där användaren måste logga in sig för att kunna läggat till, ta bort och ändra information i databasen.

Så långt jag har kommit nu så får jag bara Internt Server Fel 500 hela tiden..

Ni ska få se koderna..

<% 

Session("username") = Request.Form("username")
Session("password") = Request.Form("password")

If Session("username") = "<% = RecSet('Username') %>" AND Session("password") = "<% = RecSet('Password') %>" THEN
Response.Write "You are logged in and are now allowed to edit the database."
Else
Response.Write "Login Failed, please check your username and password and try again"
Response.Write "<a href='admin_login.asp'>Try again</a>
End If
%>

Så här ser databas anslutningen + Sql uttrycket ut för scriptet och den ligger i en fil som heter db_adminlogin.asp

<% 

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open = "bypath"

		Addera = "SELECT * FROM users"

		Set RecSet = Server.CreateObject("ADODB.Recordset")
			
			' This opens the Sql querys with the help of Recordset
			RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic 
%>

Är ganska ny på det här med ASP, så jag skulle vara tacksam för alla svar jag skulle kunna få.

[Redigerat av cHeMiCaL-X den 14 okt 2001]

Medlem sedan okt. 20005 273 inlägg
#2

Ta bort snälla felmedelanden under verktyg....så ser du det riktiga felet ;)

Medlem sedan okt. 2001208 inlägg
#3

I IIS under Custom Messages?

Medlem sedan juni 200032 967 inlägg
#4

Nix, i Internet Explorer.

Verktyg -> Internetalternativ -> Avancerat -> Visa egna http-felmeddelanden / Show friendly error messages.

Mvh,

Medlem sedan okt. 2001208 inlägg
#5

Då står det så här:

Microsoft VBScript compilation error '800a0409' 

Unterminated string constant 

/bypath/admin_login2.asp, line 36 

If Session("username") = "<% = RecSet('Username')
-------------------------------------------------^
Medlem sedan juni 200032 967 inlägg
#6

Jag kände på mig det.

Du kan inte ha asp-block i asp-block på det sättet.

Prova detta:

If Session("username") = RecSet("Username") AND Session("password") = RecSet("Password") THEN

Men, om det där är en inloggningskontroll, så bör du istället göra den jämförelsen direkt i SQL-frågan.

De båda kodstyckena du visar, hänger de ihop? Det ser ut så...

Mvh,

Medlem sedan okt. 2001208 inlägg
#7

nu verkar det som jag har skrivit SQL uttrycket fel, Får mitt egna felmeddelande när jag ska logga in..

[Redigerat av cHeMiCaL-X den 14 okt 2001]

Medlem sedan juni 200032 967 inlägg
#8

Fast den andra kodsnutten du visade, den kan inte fungera. Du skall inte ha något = efter Connect.open, nämligen.

Connect.Open "bypath"

Mvh,

Medlem sedan okt. 2001208 inlägg
#9

har tagit bort = på Connect.Open

Medlem sedan juni 200032 967 inlägg
#10

Ok, hur ser koden för hela den sidan ut?

Medlem sedan okt. 2001208 inlägg
#11

lite jobbig att klistra in det här igen men här kommer den...

<!-- #include file="adovbs.inc" -->
<!-- #include file="db_adminlogin.inc" -->
<html>
<head>
<meta name="VI60_DTCScriptingPlatform" content="Klient (IE 4.0 DHTML)">
<title>The_Bypath Ftp-Server Ring</title> <LINK REL=STYLESHEET HREF="bypath.css" TYPE="text/css"></head>
<body bgproperties="fixed" background="images/bg_color.gif">
<center>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-left-width:0; border-right-width:0" bordercolor="#111111" width="63%" id="AutoNumber1" height="182">
  <tr>
    <td width="100%" bgcolor="#FFFFFF" style="border-left-color: #111111; border-left-width: 1; border-right-color: #111111; border-right-width: 1" height="55">
    <p align="center">
    <img border="0" src="images/bypath-logo.gif"></td>
  </tr>
  <tr>
    <td width="100%" style="border-left-style: none; border-left-width: medium; border-right-style: none; border-right-width: medium; border-top-style: solid; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1" height="19">
    <p align="center"><b><font size="1" face="Verdana">
    <a href="show.asp?Show=apps">Apps</a></font></b> 
    &#0124; <b><font size="1" face="Verdana">
    <a href="show.asp?Show=console">Console</a></font></b> &#0124; <b>
    <font size="1" face="Verdana">
    <a href="show.asp?Show=games">Games</a></font></b> &#0124; <b>
    <font size="1" face="Verdana">
    <a href="show.asp?Show=movies">Movies</a></font></b> &#0124; <b>
    <font size="1" face="Verdana">
    <a href="show.asp?Show=music">Music</a></font></b> &#0124; <b>
    <font face="Verdana" size="1"><a href="search.asp">Search - Not working.</a></font></b></td>
  </tr>
  <tr>
    <td width="100%" bgcolor="#FFFFFF" style="border-left-color: #111111; border-left-width: 1; border-right-color: #111111; border-right-width: 1" height="68">
<% 

Session("username") = Request.Form("username")
Session("password") = Request.Form("password")

If Session("username") = RecSet("Username") AND Session("password") = RecSet("Password") THEN
Response.Write "You are logged in and are now allowed to edit the database."
Else
Response.Write "Login Failed, please check your username and password and try again <br>"
Response.Write "<a href='admin_login.asp'>Try again</a>"
End If
%>
    </td>
    </tr>
    <td width="100%" style="border-left: medium none #111111; border-right: medium none #111111; border-top-style: solid; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1" height="12">
    <p align="center"></td>
  </tr>
  <tr>
    <td width="100%" bgcolor="#FFFFFF" style="border-left-color: #111111; border-left-width: 1; border-right-color: #111111; border-right-width: 1" height="24">
    <p align="left"><font face="Verdana" size="1"><b>Scripting and design: [cHeMiCaL-X] 
    - </b>This is a free service. If you dont like it, leave us!</font></td>
  </tr>
</table>
</center>
</body>
</html>

Databas kopplingen och SQL Uttrycket ser nu ut så här ( db_adminlogin.inc ):

<% 

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "bypath"

		Addera = "SELECT * FROM users Order BY Username"

		Set RecSet = Server.CreateObject("ADODB.Recordset")
			
			' This opens the Sql querys with the help of Recordset
			RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic 
%>

[Redigerat av cHeMiCaL-X den 14 okt 2001]

Medlem sedan juni 200032 967 inlägg
#12

Om du inte använder db_adminlogin.asp för annat, så ändra SQL-frågan till följande:

Addera = "SELECT * FROM users WHERE username = '" & Request.Form("username") & "' AND password = '" & Request.Form("password") & "'"

Byt sedan

If Session("username") = RecSet("Username") AND Session("password") = RecSet("Password") THEN

mot

If not RecSet.eof then

Sen kan du ju också kontrollera så att du har rätt värden med dig.

Response.write Addera precis innan du skapar det recordsetet.

Mvh,

Medlem sedan okt. 2001208 inlägg
#13

Detta är vad jag fick när jag la in Response.Write precis för skapandet av recordsetet:

Microsoft VBScript runtime error '800a01a8' 

Object required: 'Respons' 

/bypath/db_adminlogin.inc, line 7

db_adminlogin.inc ser nu ut så här:

<% 

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "bypath"

		Addera = "SELECT * FROM users WHERE username = '" & Request.Form("username") & "' AND password = '" & Request.Form("password") & "'"
Respons.Write Addera
		Set RecSet = Server.CreateObject("ADODB.Recordset")
			
			' This opens the Sql querys with the help of Recordset
			RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic 
%>

Tack för hjälpen jag har fått hittils, uppskattar det!

-----

Det var jag som hadde stavat fel på Response :)

[Redigerat av cHeMiCaL-X den 14 okt 2001]

Medlem sedan juni 200032 967 inlägg
#14

Du har glömt ett litet e.

Respons[b]e[/b].Write Addera

Mvh,

Medlem sedan okt. 2001208 inlägg
#15

Verkar som inte den får med sig informationen från forumläret riktigt..
Jag får detta: SELECT * FROM users WHERE Username = '' AND Password = 'Test'

Medlem sedan juni 200032 967 inlägg
#16

Då är det dags att kontrollera stavning på namnen du gett dina formulärfält och stavningen du använt í Request.Form i byggandet av SQL-frågan.

Mvh,

Medlem sedan okt. 2001208 inlägg
#17

nu funkar det...

<form method ="Post" action="admin_login2.asp">

låg på fel ställe

Medlem sedan okt. 2001208 inlägg
#18

Nu till en annan sak.. Kan man köra två SQL satser samtidigt?
jag måste ju ha sql satserna för att rediger och lägga till och sånt
+ att jag måste ha sql satserna för session...

Hur gör man det?

Medlem sedan okt. 2001208 inlägg
#19

Tack för hjälpen..

Medlem sedan juni 200032 967 inlägg
#20

Jag förstår inte riktigt hur du menar.

Man kan i alla fall ha flera olika recordsets öppna samtidigt.

sqlfraga1 = "select * from tblBlah where a='oop'"
sqlfraga2 = "select * from tblBlah where b='kaah'"
set objRS = Connect.execute(sqlfraga1)
set objRS2 = Connect.execute(sqlfraga2)

Mvh,

258 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)