如何从超链接设置PHP会话变量?

时间:2010-05-24 15:41:25

标签: php session

我第一次捅这个,所以请不要笑!我创建了一个会话变量,允许用户在同一站点上切换英国和美国内容(英国默认)。

<?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 个答案:

答案 0 :(得分:4)

您可以将?lang = UK附加到网址,然后您的代码中将提供$ _GET ['lang']变量。 例如:

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

答案 1 :(得分:1)

如果你想在点击链接的帮助下设置会话变量。你将不得不使用ajax,当你点击一个链接你可以调用一个javascript函数,然后这个函数可以反过来使ajax命中一个php文件然后这个php文件可以设置会话变量。

答案 2 :(得分:0)

首先,您只需使用cookie(无需会话)即可完成此操作。

话虽如此,只需创建一些指向uri的链接,例如:/set_territory.php?cc=UK 等等。

然后,

set_territory.php可以通过$_GET['cc']设置区域,并将用户重定向到相应的内容。

答案 3 :(得分: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;}