webForumDet fria alternativet

Databas/Sql/Session

23 svar · 350 visningar · startad av cHeMiCaL-X

cHeMiCaL-XMedlem sedan okt. 2001228 inlägg
#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]

icaaqMedlem sedan okt. 20004 910 inlägg
#2

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

------------------
[Har aldrig redigerats av någon den 11 okt 2001]

cHeMiCaL-XMedlem sedan okt. 2001228 inlägg
#3

I IIS under Custom Messages?

@ndersMedlem sedan juni 200026 914 inlägg
#4

Nix, i Internet Explorer.

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

Mvh,

------------------
All your base are belong to me.

cHeMiCaL-XMedlem sedan okt. 2001228 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')
-------------------------------------------------^
@ndersMedlem sedan juni 200026 914 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,

------------------
All your base are belong to me.

cHeMiCaL-XMedlem sedan okt. 2001228 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]

@ndersMedlem sedan juni 200026 914 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,

------------------
All your base are belong to me.

cHeMiCaL-XMedlem sedan okt. 2001228 inlägg
#9

har tagit bort = på Connect.Open

@ndersMedlem sedan juni 200026 914 inlägg
#10

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

------------------
All your base are belong to me.

cHeMiCaL-XMedlem sedan okt. 2001228 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]

@ndersMedlem sedan juni 200026 914 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,

------------------
All your base are belong to me.

[Redigerat av @nders den 14 okt 2001]

cHeMiCaL-XMedlem sedan okt. 2001228 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]

@ndersMedlem sedan juni 200026 914 inlägg
#14

Du har glömt ett litet e.

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

Mvh,

------------------
All your base are belong to me.

cHeMiCaL-XMedlem sedan okt. 2001228 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'

@ndersMedlem sedan juni 200026 914 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,

------------------
All your base are belong to me.

cHeMiCaL-XMedlem sedan okt. 2001228 inlägg
#17

nu funkar det...

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

låg på fel ställe

cHeMiCaL-XMedlem sedan okt. 2001228 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?

cHeMiCaL-XMedlem sedan okt. 2001228 inlägg
#19

Tack för hjälpen..

@ndersMedlem sedan juni 200026 914 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,

------------------
All your base are belong to me.

133 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
130 ms — hämta tråd, inlägg och bilagor (db)