我有以下问题…我想在单击普通链接时设置会话变量,例如:
<a href="home" name="home">home</a>
我的研究似乎指出,PHP无法以设置会话变量的方式赶上click事件。
我相信使用Ajax是可能的,但是如何呢?我的链接看起来像什么? 设置会话变量应如下所示:
$_SESSION['link'] = home;
简而言之:单击HTML中的链接时,必须设置会话变量。 我该怎么做?
PS:我对Ajax不太熟悉,但是我会赶上。
编辑:链接将指向同一页面,我也想避免类似“ home.php?link = X”的网址。 如果不可能以其他方式进行操作,那就太糟糕了。但我希望有解决方案。 重要提示: 链接的名称将为$_SESSION['link']
$_SESSION['link']
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。«验证以获得更高的安全性。我也许可以为您提供更好的脚本。