1

次のコード行をエミュレートする呼び出し可能な UDF を作成したいと考えています。目標は、ショッピング カートのデータを保持しながら、ユーザーのセッション (さまざまなログイン データ) を強制終了することです。コードは動作しますが、UDF バージョンをまだ動作させることができませんでした。任意のヒント?

<!--- move cart to temporary variable --->
<cfset temp_cart = arrayToList(session.cart)>

<!--- kill entire session --->
<cfset foo = structclear(session)>

<!--- re-initialize cart --->
<cfset session.cart = ArrayNew(1)>

<!--- move temporary cart back to new session cart --->
<cfset session.cart = listToArray(temp_cart)>

どこから始めればよいかさえわかりませんが、これまでのところ、私のめちゃくちゃな UDF は次のとおりです。

function LogOut()
    {
  temp_cart = arrayToList(session.cart); 
  foo = structclear(session);
  session.cart = ArrayNew(1);
  session.cart = listToArray(temp_cart);
}
4

1 に答える 1

3

ここで問題が何であるかを明確にする一方で、コード品質を向上させるためにそのUDFに加えることができるいくつかの変更があります。

function LogOut(){
    var temp_cart = session.cart;
    structclear(session);
    session.cart = temp_cart;
}

これにより、カートを除くすべてのセッション変数が吹き飛ばされるはずです。

(「ルーチンは複数回宣言することはできません」についてのあなたの新しいコメントを見たばかりです)

さて、問題はあなたの関数ではなく、それをどのようにロードするかです。この関数をどこで削除しますか?同じリクエストで複数回使用されているファイルで明らかに宣言しています。この関数をApplication.cfcまたはApplication.cfmに配置できませんか?または、リクエストごとに1回だけ含めるようにするUDFライブラリにありますか?

どのバージョンのCFを使用していますか?

于 2012-09-12T22:08:11.273 に答える