2017-10-17 49 views
0

我正在使用的應用程序在頁面初始加載時設置了隱藏的輸入變量。變量需要在所有頁面上訪問。沒有將這些變量轉換爲會話變量的原因是用戶可以使用不同的參數打開另一個瀏覽器,並將這些值作爲隱藏的輸入傳遞,使其無任何問題。什麼是最好的替代方案,以擺脫這些隱藏的輸入..我試着將所有變量轉換爲結構,但結構需要作爲表單提交的一部分發布以使其可供後續頁面使用。另一個缺點是這個應用程序是使用frames.I沒有任何代碼發佈。ColdFusion將隱藏的表單變量轉換爲結構

+0

你需要決定你想要什麼。隱藏的輸入變量只能通過表單提交給ColdFusion使用。需要會話變量才能使數據可供後續頁面使用,但他們在打開新瀏覽器時提到了警告。也許我不理解你的問題? –

+0

你是對的......隱藏的輸入雖然容易出現安全風險......還有其他的替代方式來傳遞這些表單變量嗎?現在我創建了一個新的隱藏變量,它保存了所有隱藏輸入的編碼json字符串。但新變量又是一個隱藏輸入 – DG3

+0

如果這些變量的原始值來自用戶輸入,那麼您究竟在擔心什麼? –

回答

1

聽起來好像您希望與同一個Web會話關聯的不同瀏覽器實例維護自己的不同數據集。通過傳遞formurl變量來做到這一點似乎是一個壞主意。

您可以使用的一種方法是onSessionStart(或根據需要)在用戶會話中創建一個結構以保存數據的實例。例如

session.data = { 
    someRandomKey: { 
     valueA: 42, 
     valueB: "Porridge" 
    } 
} 

然後,只需通過someRandomKey作爲隱藏form字段或查詢字符串參數。現在,當他們提交表單以更新變量時,您可以使用隱藏表單字段中的id從session.data找到適當的結構。

當用戶需要這個表單的一個新實例時,給它們一些方法,比如鏈接或按鈕,創建一個新的唯一鍵,用這個鍵插入一個結構體session.data並用任何默認值填充它,然後作爲一個隱藏的表單字段或查詢字符串參數再次加載沿着新的id傳遞的表單。