2010-05-24 36 views
0

我的第一個刺傷,所以請不要笑!我創建了一個會話變量,以允許用戶在同一網站上的英國和美國內容之間切換(英國默認)。如何從超鏈接設置PHP會話變量?

<?php 
session_start(); 
$_SESSION['territory'] = 'UK'; 
if (isset($_SESSION['territory'])){ 
    echo 'Session is set to '.$_SESSION['territory']; 
} 
else{ 
    echo 'Session not set yet'; 
} 
?> 

目前爲止都很好。當用戶點擊英國或美國時,我現在需要一些鏈接來設置此變量。我所能做的就是通過表單設置變量,通過簡單的舊href設置沒有任何幫助。任何人都可以把我引向正確的方向嗎?非常感激。

回答

4

您可以將?lang = UK附加到網址,然後$ _GET ['lang']變量將在您的代碼中可用。 例如:

switch($_GET['lang']) { 
case 'UK': case 'US': 
    $_SESSION['territory'] = $_GET['lang']; 
    break; 
default: 
    $_SESSION['territory'] = 'UK'; 
} 
+0

我只是寫類似的東西,] 1個 – Adirael 2010-05-24 15:44:36

0

首先,你可以只用一個cookie(無需會話)做到這一點。

這就是說,只是創建一些鏈接到一個URI,說:/set_territory.php?cc=UK 等等。

set_territory.php然後可以通過$_GET['cc']設置領土並將用戶重定向到適當的內容。

+0

謝謝大家,儘管如果poss我想避免使用URI。 Cookie是更好的選擇嗎? – 2010-05-24 15:59:19

1

如果您想通過點擊鏈接設置會話變量。你將不得不使用Ajax,當你點擊一個鏈接,你可以調用一個JavaScript函數,然後這個函數可以反過來使ajax命中一個PHP文件,然後這個PHP文件可以設置會話變量。

+0

爲了澄清,這可以工作,因爲Ajax調用將「觸發」設置會話的PHP腳本,而不會更改用戶所在的頁面。當然,你可能希望在之後刷新頁面來更改內容。 – erjiang 2010-05-24 15:52:46

0

我有同樣的問題 - 我想通過單擊超鏈接並獲取值轉到下一頁(不使用GET,因爲參數存儲在URL中)傳遞參數到另一個頁面。

那些不明白你爲什麼要這麼做的答案是你不想讓用戶看到敏感信息,或者你不想讓某人編輯GET。

在淘汰互聯網後,它似乎不可能使用POST方法建立一個正常的超鏈接。

然後我有一個尤里卡時刻! 爲什麼不只是使用CSS來使提交按鈕看起來像一個正常的超鏈接? ...並將我想要傳遞的值放入隱藏字段中。

我試了一下,它的工作原理。你可以在這裏看到的的exaple http://paulyouthed.com/test/css-button-that-looks-like-hyperlink.php

表單的基本代碼:

<form enctype="multipart/form-data" action="page-to-pass-to.php" method="post"> 
         <input type="hidden" name="post-variable-name" value="value-you-want-pass" /> 
         <input type="submit" name="whatever" value="text-to-display" id="hyperlink-style-button"/> 
       </form> 

基本的CSS是:

#hyperlink-style-button{ 
     background:none; 
     border:0; 
     color:#666; 
     text-decoration:underline; 
    } 

    #hyperlink-style-button:hover{ 
     background:none; 
     border:0; 
     color:#666; 
     text-decoration:none; 
     cursor:pointer; 
     cursor:hand; 
    } 
#hide{visibility:hidden;width:0px;}