ASP Как вставить имя пользователя в таблицу? - PullRequest
0 голосов
/ 06 октября 2009

Я борюсь с приведенным ниже кодом, я читаю имя пользователя, вошедшего в систему, и пытаюсь вставить их имя в таблицу SQL, называемую лицензиями, таблица содержит 2 столбца, 1 содержит номера лицензий, а другой - все нули в момент, но имя пользователя должно быть вставлено вдоль первой стороны, когда эта страница загружается. В настоящее время страница постоянно зацикливается, и в таблицу ничего не вставляется. Пользователь внутри connection1.asp имеет доступ на чтение / запись к базе данных.

Есть идеи? Спасибо

<%@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
%>

Ответы [ 2 ]

1 голос
/ 06 октября 2009

Если пользователь НЕ найден, следует ли делать ВСТАВКУ вместо ОБНОВЛЕНИЯ?

Если ОБНОВЛЕНИЕ верное, измените последний NULL ... удалите кавычки. Сейчас вы сравниваете значение STRING 'NULL' вместо значения NULL, и оно должно быть IS NULL

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

Кроме того, посмотрите, можете ли вы закомментировать тег <BODY ... > и создать новый без RELOADFUNCTION, и посмотрите, имеет ли это значение.

Наконец, ознакомьтесь с SQL-инъекцией, поскольку ваш код подвержен атакам с помощью инъекций. Ищите на StackOverflow.com SQL Injection, и вы найдете множество объяснений, примеров и способов лечения.

0 голосов
/ 06 октября 2009

Проверьте, возвращает ли LOGON_USER какие-либо данные. Если для безопасности IIS установлено «Анонимный» доступ, то он не будет заполнен ничем.

Ваш код также потенциально подвержен атакам SQL-инъекций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...