单击<a> link</a>时如何设置会话变量

时间:2011-01-31 18:49:29

标签: php html ajax session

我遇到以下问题...我想在点击普通链接时设置会话变量,如:

<a href="home" name="home">home</a>

我的研究似乎指出,PHP不可能以设置会话变量的方式赶上click事件。

我相信它可以用Ajax,但是如何?我的链接会是什么样的? 设置会话变量应如下所示:

$_SESSION['link'] = home;

简而言之:点击HTML中的链接时,必须设置会话变量 我该怎么做?

PS:我对Ajax不太熟悉,但我会赶上来。

编辑:链接将引用同一页面,我也想避免使用像“home.php?link = X”这样的网址。
如果不可能以任何其他方式做到这一点,那就太糟糕了。但我希望有一个解决方案 重要提示:链接的名称将是$_SESSION['link']

的值

4 个答案:

答案 0 :(得分:11)

    session_start();
    if(isset($_SESSION['current'])){
         $_SESSION['oldlink']=$_SESSION['current'];
    }else{
         $_SESSION['oldlink']='no previous page';
    }
    $_SESSION['current']=$_SERVER['PHP_SELF'];

也许这就是你要找的东西? 它会记住你来自的旧链接/页面(在你的网站内)。

将该片放在每页的顶部。

如果你想让它'刷新证明',你可以添加另一张支票:

   if(isset($_SESSION['current']) && $_SESSION['current']!=$_SERVER['PHP_SELF'])

这将使页面不记得自己。

更新:与@Brandon差不多...... 只是使用一个php变量,我知道这看起来像一个安全风险,但如果完成正确它不是。

 <a href="home.php?a=register">Register Now!</a>

PHP:

 if(isset($_GET['a']) /*you can validate the link here*/){
    $_SESSION['link']=$_GET['a'];
 }

为什么甚至将GET存储在会话中?只是使用它。 请告诉我为什么你不想使用GET。 «验证更安全。 我也许可以用更好的剧本来帮助你。

答案 1 :(得分:11)

我遇到了同样的问题 - 我想通过点击超链接将参数传递给另一个页面并获取值以转到下一页(不使用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;
    }

答案 2 :(得分:4)

在HTML中:

<a href="index.php?link=home" name="home">home</a>

然后在PHP中:

if(isset($_GET['link'])){$_SESSION['link'] = $_GET['link'];}

答案 3 :(得分:2)

您是否有指向其他网页的链接?如果是这样,也许您可​​以将变量放在查询字符串中,并在加载链接的页面时设置会话变量。

所以链接看起来像这样:

<a href="home.php?variable=value" name="home">home</a>

并且homge页面将解析查询字符串并设置会话变量。