繁体   English   中英

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

[英]How do I set a PHP session variable from a hyperlink?

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

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

到目前为止一切都很好。 现在,当用户单击英国或美国时,我需要几个链接来设置此变量。 Google只能通过表单设置变量,而对于通过简单的旧href设置没有任何帮助。 有人可以指引我正确的方向吗? 非常感激。

您可以在URL后面附加?lang = UK,然后$ _GET ['lang']变量将在您的代码中可用。 例如:

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

如果要在单击链接的帮助下设置会话变量。 您将不得不使用ajax,当您单击链接时可以调用javascript函数,然后该函数可以使ajax命中php文件,然后该php文件可以设置会话变量。

首先,您可以仅使用cookie(无需会话)来执行此操作。

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

set_territory.php然后可以通过$_GET['cc']设置地区,并将用户重定向到适当的内容。

我遇到了同样的问题-我想通过单击超链接将参数传递给另一页,并获取值以转到下一页(不使用GET,因为参数存储在URL中)。

对于不了解您为什么要执行此操作的用户,答案是您不希望用户看到敏感信息,或者您不希望有人编辑GET。

仔细搜索互联网后,似乎无法使用POST方法建立普通的超链接。

然后我有一个尤里卡的时刻! 为什么不使用CSS来使Submit按钮看起来像普通的超链接呢??? ...并将要传递的值放在隐藏字段中。

我尝试了它,它的工作原理。 您可以在这里看到一个实例,例如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;}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM