2010-05-24 104 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;}