/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Opret ny bruger (med kontrol af eksisteren~
Fra : Rasmus Nielsen


Dato : 20-01-04 15:09

Jeg har en side hvor man kan oprette en ny bruger. Og så har jeg
ændret lidt på ASP koden for at kunne kontrollere om en bruger
allerede eksisterer.

Jeg får ikke nogen fejlmeddelser, men der bliver overhovedet ikke
skrevet til databasen. (jeg har prøvet at oprette nye, men også
allerede eksisterende brugernavne, men der sker intet.)

Koden ser således ud:

SQL = "SELECT Username FROM Login Where Username = '" &
Request.Form ("Username") & "'"

Set RS = Conn.Execute (SQL)

If RS.EOF Or RS.BOF Then
SQL = "INSERT INTO Login(Username, Password, FirstName,
LastName, Email) VALUES ( '" _
+ Request.Form ("Username") + "', '" _
+ Request.Form ("Password") + "', '" _
+ Request.Form ("FirstName") + "', '" _
+ Request.Form ("LastName") + "', '" _
+ Request.Form ("Email") + "' )"
Set RS = Conn.Execute (SQL)
mode = 1
Else
mode = 2
End If

Conn.Close
Set Conn = Nothing

If mode = 1 Then
Response.Redirect ("login.asp?Error=Du+kan+nu+logge+på.")
ElseIf mode = 2 Then
Response.Redirect
("opret.asp?Error=Brugernavn+eksisterer+allerede.")
Else
mode = 0
End If

Jeg har en mistanke om at det er pga af de to SQL sætninger.

Hvad er der galt?

mvh Rasmus

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jesper Stocholm (20-01-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 20-01-04 15:13

Rasmus Nielsen <rasmus_nielsen@tele2adsl.dk> wrote in news:bujcqc$n0e$1
@sunsite.dk:

> Jeg har en side hvor man kan oprette en ny bruger. Og så har jeg
> ændret lidt på ASP koden for at kunne kontrollere om en bruger
> allerede eksisterer.
>
> Jeg får ikke nogen fejlmeddelser, men der bliver overhovedet ikke
> skrevet til databasen. (jeg har prøvet at oprette nye, men også
> allerede eksisterende brugernavne, men der sker intet.)
>
> Koden ser således ud:
>
> SQL = "SELECT Username FROM Login Where Username = '" &
> Request.Form ("Username") & "'"
>
> Set RS = Conn.Execute (SQL)
>
> If RS.EOF Or RS.BOF Then

Hvis der ingen brugere er i databasen med det specifikke brugernavn,
returneres et tomt recordset. I dette tilfælde (og kun dette) er BÅDE
rs.BOF og rs.EOF sande, dvs du skal udskifte dit OR med AND

--
Jesper Stocholm
http://stocholm.dk

Gør Christiania en tjeneste og køb din hash et andet sted.

Jens Gyldenkærne Cla~ (20-01-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 20-01-04 15:26

Jesper Stocholm skrev:

>> If RS.EOF Or RS.BOF Then

> Hvis der ingen brugere er i databasen med det specifikke
> brugernavn, returneres et tomt recordset. I dette tilfælde (og
> kun dette) er BÅDE rs.BOF og rs.EOF sande, dvs du skal
> udskifte dit OR med AND

Det er ikke her problemet ligger. Det er nok at teste på rs.EOF,
men der ligger formentlig en fejl i INSERT-sætningen.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (20-01-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 20-01-04 15:34

Rasmus Nielsen skrev:

> Jeg får ikke nogen fejlmeddelser, men der bliver overhovedet ikke
> skrevet til databasen. (jeg har prøvet at oprette nye, men også
> allerede eksisterende brugernavne, men der sker intet.)

a) Generelt ved problemer med databasekald: Skriv sql-sætningerne
ud. Hver gang. Hver eneste gang.

Se hvordan her: <http://asp-faq.dk/article/?id=41>.


> SQL = "SELECT Username FROM Login Where Username = '" &
> Request.Form ("Username") & "'"

b) Tjek for reserverede ord. Jeg kan ikke se hvilken database du
benytter, men både login og username er potentielle reserverede
ord. Du kan evt. escape for en sikkerheds skyld: [Login] og
[Username]

c) Det er en god ide at validere formdata inden man sender det til
en database. Se hvordan det kan gøres her:
<http://asp-faq.dk/article/?id=95>


> Set RS = Conn.Execute (SQL)
>
> If RS.EOF Or RS.BOF Then

Lav et response.write-tjek så du kan se hvor du havner i drilske
if-sætninger.

> SQL = "INSERT INTO Login(Username, Password, FirstName,
> LastName, Email) VALUES ( '" _
> + Request.Form ("Username") + "', '" _
> + Request.Form ("Password") + "', '" _
> + Request.Form ("FirstName") + "', '" _
> + Request.Form ("LastName") + "', '" _
> + Request.Form ("Email") + "' )"

Udskriv sql-variablen (se a), tjek for reserverede ord (se b) og
overvej at validere input (se c).

> Set RS = Conn.Execute (SQL)


Du tjekker ikke for fejl efter execute-linjen. Det ville jeg gøre


> If mode = 1 Then
> Response.Redirect ("login.asp?Error=Du+kan+nu+logge+på.")
> ElseIf mode = 2 Then
> Response.Redirect
> ("opret.asp?Error=Brugernavn+eksisterer+allerede.")
> Else
> mode = 0
> End If

Når du vil finde fejl, er det en god ide at fjerne redirects fra
siden - de kan skjule evt. fejl. Prøv også at udskrive mode - så
kan du se hvor du havnede i if-sætningerne.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Chrisser (21-01-2004)
Kommentar
Fra : Chrisser


Dato : 21-01-04 08:45

Rasmus Nielsen wrote:
> If RS.EOF Or RS.BOF Then

Her kan du prøve at udskrive et eller andet for at se hvordan din if-sætning
virker:

Response.write "hej"
response.flush

> SQL = "INSERT INTO Login(Username, Password, FirstName,
> LastName, Email) VALUES ( '" _
> + Request.Form ("Username") + "', '" _
> + Request.Form ("Password") + "', '" _
> + Request.Form ("FirstName") + "', '" _
> + Request.Form ("LastName") + "', '" _
> + Request.Form ("Email") + "' )"
> Set RS = Conn.Execute (SQL)

Vi du virklig have et recordset tilbage på en insert ?
Prøv at nøjes med:

Conn.Execute(SQL)

Mvh
Chrisser



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste