Question

Je me bats avec mon code ci-dessous, je lis l'utilisateur connecté sur les utilisateurs nom d'utilisateur et d'essayer d'insérer leur nom dans une licence appelée table SQL, la table contient 2 colonnes 1 contient les numéros de licence l'autre des valeurs NULL à la moment, mais un nom d'utilisateur doit être inséré le long du côté une lorsque cette page se charge. Actuellement la page boucles juste en permanence et rien est inséré dans la table. L'utilisateur à l'intérieur connection1.asp ne sont en lecture / écriture accès à la base de données.

Toutes les idées? Merci

<%@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
%>
Était-ce utile?

La solution

Si l'utilisateur ne se trouve pas, devriez-vous faire un INSERT au lieu de mise à jour?

Si la mise à jour est correcte, changer le dernier NULL ... supprimer les guillemets. En ce moment, vous comparez une valeur STRING de 'NULL' au lieu de la valeur NULL et il devrait être IS NULL

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

En outre, si vous pouvez commenter le tag <BODY ... > et créer un nouveau sans RELOADFUNCTION et voir si cela fait une différence.

Enfin, lire sur l'injection SQL parce que votre code est sujette à des attaques par injection. Une recherche sur StackOverflow.com pour injection SQL et vous trouverez beaucoup d'explications, des exemples et des remèdes.

Autres conseils

Vérifiez si LOGON_USER est en fait de retour de données. Si vous avez IIS sécurité est défini sur l'accès "Anonyme alors ce ne sera pas remplie avec quoi que ce soit.

Votre code serait aussi potentiellement sujette à des attaques par injection SQL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top