小编典典

单击链接时如何设置会话变量

ajax

我有以下问题…我想在单击普通链接时设置会话变量,例如:

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

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

我相信使用Ajax是可能的,但是如何呢?我的链接看起来像什么?
设置会话变量应如下所示:

$_SESSION['link'] = home;

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

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

编辑:链接将指向同一页面,我也想避免类似“ home.php?link = X”的网址。
如果不可能以其他方式进行操作,那就太糟糕了。但我希望有解决方案。
重要提示: 链接的名称将为$_SESSION['link']


阅读 250

收藏
2020-07-26

共1个答案

小编典典

    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。«验证以获得更高的安全性。我也许可以为您提供更好的脚本。

2020-07-26