Създавам кошница за пазаруване със сесияРамка CFWheels 1.1.8. Имам странен проблем, когато сесията на ColdFusion 9 не продължава. Прекарах безброй часове проверка и двойна проверка на моя код. Надявам се, че едно ново око ще забележи това, което съм пропуснал. По-долу е опростена версия на моя код. Всяко предложение би било много ценно.
конфигурационния / app.cfm
<cfscript>
this.name = hash(getDirectoryFromPath(getCurrentTemplatePath())
, "SHA-256");
this.applicationTimeout = createTimeSpan(0, 2, 0, 0);
this.loginStorage = "session";
this.sessionManagement = true;
this.sessionTimeout = createTimeSpan(0, 1, 0, 0);
this.setClientCookies = false;
this.setDomainCookes = false;
</cfscript>
Събития / onRequestStart.cfm
<cfscript>
if (! StructKeyExists(session, "cart")){
session.cart = arrayNew(1);
}
</cfscript>
Контрольори / Cart.cfc
<cfcomponent extends="Controller">
<cffunction name="index">
</cffunction>
<cffunction name="create">
<cfset arrayAppend(session.cart, structNew())>
<cfset index = arrayLen(session.cart)>
<cfset session.cart[index].title = "Product Name">
<cfset session.cart[index].quantity = "1">
<!---
this return the expect cart array with product.
The item disappears once it gets redirected to the index page
--->
<cfdump var="#session.cart#" abort>
<cfset redirectTo(action="index")>
</cffunction>
</cfcomponent>
Прегледи / количка / index.cfm
<!--- this return an empty array (same in all other web page)--->
<cfdump var="#session.cart#">
Отговори:
0 за отговор № 1Направих го за работа, като коментирах (this.setClientCookies = false;
) в config / app.cfm.
0 за отговор № 2
Промяната на setClientCookies = true е просто използванебисквитките за проследяване на сесията. За да използвате управление на сесиите без бисквитки, трябва да зададете sessionTimout с application.cfm или onSessionStart с Application.cfc. Ако искате да го изпълните правилно или за всеки, който се препъва в този пост, аз включвам някои връзки. Бен прави чудесна работа, като обяснява Application.cfc с пример.