ASP Как мне вставить имя пользователя в таблицу?

StackOverflow https://stackoverflow.com/questions/1526385

  •  20-09-2019
  •  | 
  •  

Вопрос

Я борюсь со своим приведенным ниже кодом, я читаю имя пользователя вошедшего в систему пользователя и пытаюсь вставить его имя в таблицу SQL под названием licenses, таблица содержит 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
%>
Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top