Frage

Ich bin mit meinem Code zu kämpfen unten, ich bin der angemeldeten Benutzer lesen Benutzernamen und versuchen, ihre Namen in eine SQL-Tabelle genannt Lizenzen einfügen, enthält die Tabelle 2 Spalte 1 enthält die Lizenznummern der andere alle Nullen bei der Moment, aber ein Benutzername sollte an der Seite ein, wenn diese Seite geladen eingefügt werden. Derzeit nur die Seite Schleifen ständig und es wird nichts in die Tabelle eingefügt. Der Benutzer innerhalb connection1.asp hat Lese- / Schreibzugriff auf die Datenbank.

Irgendwelche Ideen? Dank

<%@LANGUAGE="VBSCRIPT" LCID=1033%>
<%
aName = Split(Request.ServerVariables("LOGON_USER"), "\")
user = aName(UBound(aName))
user = UCase(user)
Erase aName
%>
<!--#include file="Connections/connection1.asp" -->
<%
Dim Recordset1
Dim Recordset1_numRows
Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_connection1_STRING
Recordset1.Source = "SELECT * FROM Licenses2 WHERE userid = '" & user & "';"
Recordset1.Open()
%>
<HTML><HEAD></HEAD>
<BODY leftmargin="5" onLoad="setTimeout('reloadFunction()',500000)">

<% Do While NOT Recordset1.EOF %>
<% strUserName =(Recordset1.Fields.Item("userid").Value)%>
<% response.write strUserName %>'s Serial Number:

<% strSerial =(Recordset1.Fields.Item("serial").Value)%>
<% response.write strSerial %>
<% Recordset1.movenext %>

<% loop %>

<%
If strUserName = user then 
    'record found do nothing
    'response.write "user found"
else
    adoCon.Execute =  "SET ROWCOUNT 1; UPDATE Licenses2 SET userid = '" & user & "' WHERE userid = 'NULL';"
    Response.AddHeader "Refresh", "3" 
End if
%>
</BODY>
</HTML>

<%
Recordset1.Close()
Set Recordset1 = Nothing
Set Recordset2 = Nothing
%>
War es hilfreich?

Lösung

Wenn der Benutzer nicht gefunden wird, sollten Sie eine INSERT statt UPDATE tun?

Wenn das UPDATE korrekt ist, ändern Sie die letzten NULL ... entfernen Sie die Anführungszeichen. Gerade jetzt Sie einen String-Wert von 'NULL' anstelle des Wertes NULL zu vergleichen und es sollte IS NULL sein

SET ROWCOUNT 1; UPDATE Licenses2 SET userid = '" & user & "' WHERE userid IS NULL;

Auch sehen, ob Sie die <BODY ... > Tag kommentieren Sie können und ein neues ohne RELOADFUNCTION erstellen und sehen, ob das einen Unterschied macht.

Schließlich lesen auf SQL-Injection, weil Ihr Code-Injection-Angriffe anfällig ist. Suchen auf StackOverflow.com für SQL-Injection und Sie werden viele Erklärungen, Beispiele und Kuren finden.

Andere Tipps

Überprüfen Sie, ob LOGON_USER kehrt tatsächlich alle Daten. Wenn Sie IIS-Sicherheit Satz zu ‚Anonymous‘ Zugang haben, dann wird dies nicht mit irgendetwas gefüllt werden.

Ihr Code würde auch potentiell anfällig für SQL-Injection-Angriffe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top