0

ASP クラシックと SQL Server 2005 を使用する Web アプリケーションがあります。

レコードを編集しようとすると、Web ページに が表示されますHTTP 500 - Internal server error。エラーを追跡しようとしましたが、問題は FORM ACTION ディレクトリにあると思います。

ここに私のフォーム宣言があります:

<form name="frmEdit" method="post" action="/dairypo/master/tpl/queries/qupdate.asp" 
      onsubmit="return CheckOtherInfo();">

ここにqupdate.aspがあります:

<!-- #include file="../../../include/createconnection.asp" -->
<%
    act = 1
    if trim(request.form("chkAct")) = "" then
        act = 0
    end if
    curid = trim(request.form("hdnId"))
    nprice = cDbl(request.form("txtPrice"))
    nprice_big = cDbl(request.form("txtPrice_Big"))
    nrate = cDbl(request.form("txtRate"))
    csatuan_big = trim(request.form("selOrdSatuan1"))
    csatuan = trim(request.form("selOrdSatuan2"))

    objCommand_1.commandText = " SELECT nkonversi FROM ms_metriks WHERE csatuan1 = '" & csatuan_big & "' AND csatuan2 = '" & csatuan & "' "
    set qMetriks = objCommand_tpl.execute
    nkonversi = 1
    if NOT qMetriks.BOF then
        nkonversi = cDbl(qMetriks("nkonversi"))
    end if
    if nprice_big<>0 AND nprice=0 then
        nprice = nprice_big/nkonversi
    elseif nprice_big=0 AND nprice<>0 then
        nprice_big = nprice*nkonversi
    end if
    objCommand_tpl.commandText = "UPDATE ms_tpl SET " &_
                            "   dlastupdate = '" & date() & "', " &_
                            "   ctipejual = '" & trim(request.form("selBy")) & "'," &_
                            "   ckdgruprelasi = '" & trim(request.form("selgCust")) & "', " &_
                            "   ckdrelasi = '" & trim(request.form("selCust")) & "', " &_
                            "   dtglvalidawal = '" & trim(request.form("txtDate1")) & "', " &_
                            "   dtglvalidakhir = '" & trim(request.form("txtDate2")) & "', " &_
                            "   ckdcurrency = '" & trim(request.form("selCurr")) & "', " &_
                            "   nhargaperiod = " & nprice & ", " &_
                            "   nhargaperiodmax = " & nprice & ", " &_
                            "   nharga1 = " & nprice & ", " &_
                            "   nharga2 = " & nprice_big & ", " &_
                            "   csatuan1 = '" & csatuan & "', " &_
                            "   csatuan2 = '" & csatuan_big & "', " &_
                            "   nrate = " & nrate & ", " &_
                            "   bactive = " & act & ", " &_
                            "   ckdwilayah = '" & trim(request.form("selLok")) & "' " &_
                            " WHERE id = " & curid & " "
    set qUpdateRelasi = objCommand_tpl.Execute

    objCommand_tpl.commandText = "INSERT INTO ms_tplhist "&_
                               "( cUserId, dLastUpdate,ctipejual,cKdUnitKey, cKdGrupRelasi, cKdRelasi, cKdBarang, bIsFluc, cSatPeriod, "&_
                               "  nHargaPeriod,dTglValidAwal, dTglValidAkhir, cKdCurrency,cSatuan1,cSatuan2, nHarga1, nHarga2,nRate, bActive ) "&_  
                               "SELECT cUserId, dLastUpdate,ctipejual,cKdUnitKey, cKdGrupRelasi, cKdRelasi, cKdBarang, bIsFluc, cSatPeriod, "&_
                               "  nHargaPeriod,dTglValidAwal, dTglValidAkhir, cKdCurrency,cSatuan1,cSatuan2, nHarga1, nHarga2,nRate, bActive "&_
                               "FROM ms_tpl "&_
                               " WHERE id = " & curid & " "
    set qBackupData = objCommand_tpl.Execute            
%>

<form name="frmControl" action="/dairypo/homepage.asp?contID=mstpl_idxs" method="post">
<%
    for each form in request.form
        response.write "<input type=""hidden"" name=""" & form & """ value=""" & request.form(form) & """>" & vbcrlf
    next
%>  
</form>
<script>
    document.frmControl.submit()
</script>
4

1 に答える 1

4

上記のコメントに基づいて、回答をフォローアップしてこれを締めくくります。

「HTTP 500 Internal Server Error」は一般的な応答です。それは何でもかまいません。ブラウザで「わかりやすいエラー メッセージ」をオフにし、Web サーバーもエラー メッセージを出力するように設定されていることを確認してください。あなたの ASP コードは、一見すると問題ないように見えます。私はそれがSQL関連のものだと推測しています

また、AnthonyWJones の発言に +1:

ところで、blankon91 さん、「SQL インジェクション攻撃」の調査を検討して、クライアントから受信した値を SQL 文字列に連結することがどれほど賢明でないかを確認する必要があります。代わりにパラメーター化されたクエリを使用する

于 2012-05-21T19:21:25.023 に答える