2013-07-27 58 views
0

在我的代碼,我有一個鏈接:需要存儲PHP會話變量,當點擊一個鏈接

<a href='http://www.anotherpageinmywebsite.com'>Click for the other page</a> 

當用戶點擊這個鏈接,我需要的值保存到一個PHP會話變量。我不想使用Ajax,也不是使用iframe,也不使用GET變量(我不希望會話變量向用戶顯示,因爲它是敏感數據),編輯也不想將所有鏈接表單中的頁面。

現在看來似乎應該可能 - 因爲畢竟,點擊鏈接生成對Web服務器的調用來加載新的頁面,而不是我應該能一些代碼(在某種程度上)添加到「搭載」自然過程中的鏈接是否將「加載此新網頁」請求發佈到Web服務器?

當用戶單擊鏈接更新PHP會話變量(最好不使用GET變量,ajax或iframe)時,如何「搭載」這種自然發生的事件序列。

+0

@rid在點擊鏈接之前可以通過javascript訪問。 – CFHcoder

+0

這是一個電子商務網站,但我們沒有SSL證書。我工作的要求是「沒有GET變量」。 – CFHcoder

回答

0

我想,當用戶點擊它回調到Web服務器的鏈接,利用瀏覽器的默認行爲 - 我想「捎帶」上默認行爲,併發送一個更新會話變量。我試圖避免額外的電話到服務器來更新我的會話變量,我是在「不允許GET變量」的要求下。

最後我們踢了一圈,我們編寫了一個Ajax調用來設置會話變量。我們無法弄清楚如何在沒有使用GET變量的情況下單擊鏈接的默認行爲。

0

如果我們假設你正在使用一些基於PHP的框架,並且你有一個根據URL服務頁面的控制器 - 事實上這是相當微不足道的。

假設你使用的是CodeIgniter--但是對於大多數MVC來說,邏輯是相同的。

<?php 

class Web extends Controller { 

    // this will fire when you access http://mysite.com/mypage 
    function mypage($encoded_value) { 
    $decoded_value = decode($encoded_value); 

    // although CI has a different way of doing this 
    $_SESSION['mypagesessionvar'] = $decoded_value; 

    $this->load->view('mypage'); // this loads the actual page 
    } 

} 
+0

基於這個問題,提到了敏感,以及我們必須假定服務器上正在使用的是什麼 - 我想說這個變量的值應該在後端的某個地方,並且與實際的鏈接有關可以點擊。很多假設,是的。 我試圖解決這個問題的一種方法(如果它必須以某種方式來自前端)是我將有另一個參數,實際上將以某種方式進行編碼。然後,該參數將用於控制器的功能,並給予會話變量(當然首先解碼)。 – daxur

+0

這是直的PHP,JavaScript,HTML - 沒有庫,沒有jQuery,只是PHP,JavaScript和HTML。 – CFHcoder

+0

那麼,我會建議使用相同的方式,但使用直接的PHP和編碼的GET參數(我知道你說沒有GET,但我沒有看到替代)。然後你有你的PHP頁面,只需通過$ _GET ['value']獲取值,解碼並將其存儲在$ _SESSION中供以後使用。 – daxur