1

以下のコード ブロックは、クエリを実行して既存のレコードをチェックし、レコードが見つからない場合は 2 番目の挿入クエリを実行します。

<cffunction name="EndRequestFunc" access="public" returnType="string">
   <!---Queries Table To Get Requested Record--->
    <cfquery name="qryGetPageRecord" datasource="First_Main_Dev"   
    dbname="First_Services_Dev">
    SELECT pageName 
    FROM tblCFMPageRequest
    WHERE pageName = '#CGI.HTTP_REFERER#' AND scriptName = 
    '#CGI.SCRIPT_NAME#'
    </cfquery>
    <!---Conditional Check for record count equal to 0--->
    <cfif qryGetPageRecord.recordCount eq 0>
    <!---If record count equal to 0, recordset query executed--->
    <cfquery name="setNewRecord" datasource="First_Main_Dev" 
    dbname="First_Services_Dev">
    INSERT INTO tblCFMPageRequest
    VALUES ('#CGI.HTTP_REFERER#', '#CGI.SCRIPT_NAME#')
    </cfquery>
    </cfif>
    </cffunction>

私がする必要があるのは、この「example.com/portal/mypage.cfm」のような値から http が取り除かれ、前にすべてがmypage.cfmだけになるように、すべてのフォーマットの 2 つの CGI 変数の値を取り除くことです。クエリによって挿入されます。任意のガイダンスをいただければ幸いです。

更新: アドバイスのおかげで、ListLast 関数を使用して URL のhttp://example.com/の部分を削除できました。「cfm」ポイントの後に削除する必要がある文字が URL に含まれていることを覚えていなかったので、近視眼的でした。ListLast からの実際の結果の 1 つを次に示します: client_modify.cfm?uid=248&al=1&a_trigger=1。

Coldfusion で他のリスト関数を使用しようとしましたが、まだ役に立ちません。client_modify.cfm ?uid=248&al=1&a_trigger=1の太字部分を削除する方法についてのアドバイスがあるので、きれいな client_modify.cfm が残ります。

4

2 に答える 2

4

ListLast()関数を/区切り文字として使用します。cfqueryparamまた、クエリに値を入れるために常に使用するようにしてください。このような。

<cfquery name="setNewRecord" datasource="First_Main_Dev" bname="First_Services_Dev">
    INSERT INTO tblCFMPageRequest
    VALUES (<cfqueryparam cfsqltype="cf_sql_varchar" value="#ListLast(CGI.HTTP_REFERER,'/')#">, <cfqueryparam cfsqltype="cf_sql_varchar" value="#ListLast(CGI.SCRIPT_NAME,'/')#">)
</cfquery>
于 2015-05-05T20:03:39.887 に答える
3

CGI変数には「フォーマット」があってはならないので、あなたの質問は少し混乱しています。

文字列の末尾にあるファイル名を取得するだけの場合は、リスト関数を使用できます。

fileIwant = ListLast(CGI.SCRIPT_NAME,"/");

の場合、結果は になりCGI.SCRIPT_NAMEます。/wwwroot/example/index.cfmfileIwantindex.cfm

リファラーは定義されていない可能性があり、解析するとエラーがスローされるため、注意してください。

于 2015-05-05T19:55:59.250 に答える