台灣最大程式設計社群網站
線上人數
910
 
會員總數:246134
討論主題:189713
歡迎您免費加入會員
討論區列表 >> ASP >> 點擊上一頁結果與偵測點擊上一頁作動
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
點擊上一頁結果與偵測點擊上一頁作動
價值 : 100 QP  點閱數:4901 回應數:11
樓主

webtech
初學者
324 135
2041 350
發送站內信

捐贈 VP 給 webtech
請教各位大大,

一、該頁面(這裡稱為aaa.asp)存在表單元件,然後form post 到 bbb.asp(此頁面在可控制的同網域下 或 不可控制的他站串接網域下),在下操作後發現,例如原本於aaa.asp有勾選checkbox後送出表單,但再從bbb.asp點擊瀏覽器返回上一頁至aaa.asp則該checkbox又會變成未勾選狀態,
另外,aaa.asp 與 bbb.asp 皆有參數傳遞的狀況,因此感覺即使能有效達成禁止user點擊上一頁,仍極有可能造成參數傳遞錯誤的情況發生,以上請教各位先進,如果使用禁止的方法,不知是否有更為妥善的撰寫技術。

二、請恕在下異想天開,不知是否有什麼方式可以偵測user點擊瀏覽器(個人電腦 與 手機版的各種瀏覽器)返回上一頁,例如偵測到user 自 bbb.asp 返回 aaa.asp,則aaa.asp頁面會自動引導到在下預先設定的某一頁(例如:ccc.asp),

以上懇請各位先進撥冗指導,感激不盡。




搜尋相關Tags的文章: [ 上一頁 ] ,
本篇文章發表於2016-10-19 02:14
1樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
一、不只是checkbox,select和textarea也都會有相同的情況。
不要依賴瀏覽的記錄,自己手動將值以cookie或session的方式在bbb.asp記錄起來
aaa.asp中判斷有記錄時就將值設為預設值
另外要記得表單完成後將值清除,否則使用者下次使用還會看到相同的預設值

二、雖說可以偵測上一頁的網址
http://www.blueshop.com.tw/board/FUM200410061525290EW/BRD20060804142636179.html
但是我個人的建議,如果有需要讓使用者一口氣連續使用好幾頁,建議是記錄使用者的操作流程來比對
例如:有一個功能需要使用者依序送出四張表單,合計是五個頁面,我就會在第一到第四頁記錄目前是流程幾
然後在第二到第五頁先比對流程數字是否正確,正確才能繼續執行,否則跳出訊息顯示流程順序錯誤,將使用者導回第一頁
本篇文章回覆於2016-10-19 09:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

webtech
捐贈 VP 給 webtech 檢舉此回應
感謝 迷路大 的回覆指導,

關於一,例如:bbb.asp 頁面在不可控制的他站串接網域下(別人的網站),則絕無可能於bbb.asp使用cookie或session方式紀錄,
況且似乎阻止不了user使用瀏覽器點擊上一頁功能,進而造成在下所述的類似checkbox情形。

關於二,原則上是就這兩頁操作的情況,在下進一步冒昧說明,在下了解使用ASP相關語法可以輕易偵測出頁面跳換(但僅限於user使用常規跳轉頁面,如form post或超連結),
但在下在此時所需協助指導是針對user使用瀏覽器點擊上一頁此動作之偵測及頁面引導作動。

以上懇請各位先進撥冗指導,感激不盡。
本篇文章回覆於2016-10-19 12:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
我告訴你我以前用的笨方法。

將所有不能給他們回去的頁面。將其加上

這是下一頁的語法。在正常連結進來的情況下運行下一頁,並不會有動作。
但如果是按上一頁回來到該頁面時。就會馬上被推到下一頁去。

這是以前我用的方法。你可以參考看看。

不過其實目前的網頁程式寫法。我都已經設計成按上一頁的情況下也不會有問題的設計方式。
當然這並不是說去解決按上一頁後。input相關元件的記錄。因為那是不可能的事。
所以不可能的事就不要去做了。就換另外一種思緒做法。

如按上一頁就全部重來一次。或是採用ajax自動帶值的方式。
本篇文章回覆於2016-10-19 16:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

webtech
捐贈 VP 給 webtech 檢舉此回應
感謝 浩瀚星空大 的回覆指導,

關於<script>history.forward();</script>,在下於先前已有查找並使用過,確實可以防止user使用瀏覽器點擊返回上一頁,
但由於仍須考量user會有其正當的理由返回前頁(例如欲修改資料),因此在下才會萌生找尋如何取得平衡點的方式及技術。
例如:偵測到user 自 bbb.asp 返回 aaa.asp,則aaa.asp頁面會自動引導到在下預先設定的某一頁(例如:ccc.asp)
如此應可解決在下的問題,或有其他應變的方式,在下亦欣然受教。

然而,依 浩瀚星空大 所指導,如按上一頁就全部重來一次。或是採用ajax自動帶值的方式。
此兩種方式皆毫無頭緒,因此仍須懇請各位先進撥冗指導,感激不盡。
本篇文章回覆於2016-10-19 17:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

彩虹
檢舉此回應
那你就..

1.保持使用<script>history.forward();</script>防止user使用瀏覽器點擊返回上一頁

2.aaa.asp丟到bbb.asp的時候,將所有post的值紀錄在session裡面

3.自己做一個【回上頁】的按鈕,這個連結是單純連回aaa.asp刷新 ((這對使用者來說一樣是回上一頁))

4.此時回到 aaa.asp 的時候,抓出所有紀錄在sesssion的值
放回去所有的<input type="text">
如果為 <select>、check、radio 的話,你就要自己判斷,並搭配selected / checked

這樣所有的值就都會自動填上去

5.記得在最後結束時,要把所有session釋放掉

6.結案
本篇文章回覆於2016-10-19 18:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

彩虹
檢舉此回應
而AJAX方式,是比較推薦的
這樣不會有上下頁的問題,資料是透過AJAX來傳遞 ((頁面不需要跳轉,就可以得到相對應的結果))

網路其實很多範例,如果不知道怎麼使用的話,可以提出來詢問
我希望你自己先試著操作一遍,懂大約的操作方式、基礎

不太可能從頭教起
而且教你時,你可能還會聽不懂我們再說什麼

本篇文章回覆於2016-10-19 18:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
基本上,使用<script>history.forward();</script>的用意,也就是確保用戶不能使用上一頁來處理
使用瀏覽器上一頁。確實會讓所有的input變為預設值。這是沒辦法避免的事。
當使用這招的情況下。如有回上一頁的需求,你就得建立一個可以回上一頁的方式。
但這奡N不能用原來的上一頁功能來處理。而是要利用href的方式連結。這樣history.forward()就不會觸動了。



你唯一能想的,還是要想辦法再重新載入資料去對應。幸好js還是會運行。所以才會建議你用ajax的方式來將值重新帶入處理
如何應用。ajax的方式。

就是在每次get。(我相信你不可能用post,因為用post的話。是一定不能返回上一頁的)
在程式就先記錄其值。可以將其記錄到cookie或是sesioon上。
這樣ajax的話。就可以對應其值重新載入資料對應。

其實現在有很多編輯器。都已經有預存資料的動作,就是每隔一段時間(如30秒)。就會將目前的值利用ajax來儲存到session或是cookie上。
這樣就算是重新整理頁面,也可以利用js的load事件,再建立元件的同時載入對應的儲存資料。
(這點我倒是很想建議小鋪也這樣做。常常打一堆文字。出現問題後,重回上一頁就原本打的內容都不見了@@)
本篇文章回覆於2016-10-19 18:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

webtech
捐贈 VP 給 webtech 檢舉此回應
感謝 浩瀚星空大 與 彩虹大 的回覆指導,
我站:http://www.aaa.com/aaa.asp
他站:http://www.bbb.com/bbb.asp

TO:彩虹大
bbb.asp 並非存在於在下所能控制的地方,
操作流程如右,例如 我站 http://www.aaa.com/aaa.asp 帶參數到他站 http://www.bbb.com/bbb.asp,然後再從他站傳參數回來我站進一步運用,
因此bbb.asp無法放置【回上頁】的超連結連回aaa.asp刷新。另請恕在下冒昧說明,因此在下才會以user點擊瀏覽器返回上一頁為問題的主軸。
而 彩虹大 所推薦的AJAX方式,在bbb.asp為他站所有並要求串接網址不得崁入(如 ifram)任何網頁中的前提之下,務必使用 FORM SUBMIT 或 URL 參數傳遞,此處AJAX方式應當不適用。

TO:浩瀚星空大
在bbb.asp為他站所有的前提之下,在下無法放置任何超連結連回我站任一網頁,
另外 浩瀚星空大 說的沒錯,aaa.asp 連到 bbb.asp 的確是使用超連結方式,例如:<a target="_self" href="http://www.bbb.com/bbb.asp?id=123&name=Andy...等">
因此主軸為user點擊瀏覽器返回上一頁的對應方式。

''''''''''''''''''''''''''''''''''''''''''''
因此偵測到user 自 bbb.asp "點擊瀏覽器返回上一頁" 返回 aaa.asp,則aaa.asp頁面會自動引導到在下預先設定的某一頁(例如:ccc.asp)才會成為在下異想天開需要的功能。
本篇文章回覆於2016-10-19 20:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
如果樓主能操控的頁面只有aaa.asp
那麼說真的,對於使用者在bbb.asp做的任何動作,樓主都無能為力
不可能在前一頁去規範後一面的動作
要保證使用者在bbb.asp按上一頁回不到aaa.asp,可以用這種方法
aaa.asp不要直接將值送到bbb.asp,而是先送到ccc.asp再轉送到bbb.asp
aaa.asp和ccc.asp都用session記錄步驟值,ccc.asp檢查步驟值決定將資料轉傳bbb.asp還是出現錯誤頁
如果是要讓使用者按了上一頁能夠回到aaa.asp並全欄位帶出正確值
可以再送出前,先用AJAX的方式將值記錄到session,然後再送出
開啟aaa.asp後用AJAX檢查session是否有值,有的話就帶入做為預設值
本篇文章回覆於2016-10-20 09:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
如果是安全性有關的。原則上我會建議你採用全部重來的做法。
#9的做法你也可以參考。在連到你無法控管的b頁面前。先透過c頁面來儲存你的資料。再轉向到b頁面。(記得要用程式來做指向)

另外一種方式就是做成ifram的處理方式了。(雖然我比較不建議這招就是了)
本篇文章回覆於2016-10-20 09:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

ChaRles Wu
檢舉此回應
提供您參考
aaa.asp


本篇文章回覆於2016-11-18 10:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.