【问题标题】:How to set new session on each href click in php如何在php中的每个href点击设置新会话
【发布时间】:2015-02-25 07:49:55
【问题描述】:

我想在点击时设置会话。

我有一个页面 mylinks.php 并从 mysql 获取数据

while($r=mysqli_fetch_array($results))
{
 echo "<a href='get.php?id=".$row[0]."'>".$row[1]."</a>";
}

我只想在单击链接时创建一个新会话。并在另一个页面上使用它们。我想在源页面而不是在下一页上创建会话。

在 mylinks.php 上创建的会话在 get.php 上未设置 因此,每次新点击都会在源页面(即 mylinks.php 页面)上创建一个新会话。

请帮我解决这个问题。

编辑:- 我希望 get.php 的内容仅在用户来自 mylinks.php 页面时显示。

【问题讨论】:

  • 你需要了解html、javascript和php的区别。你问的,是不可能的。您只能在另一个页面上设置会话,因为您首先需要用户交互。
  • 你想完成什么?
  • 我猜你可以通过点击时的 ajax 调用来设置会话。但它可能不会像你期望的那样工作。
  • 是的,我应该尝试使用 ajax 调用。但仍然不知道如何以这种方式破解。 @AndreiP。
  • @PreeT 使用此strtok(basename($_SERVER['HTTP_REFERER']),'?') 获取不带查询字符串的页面名称

标签: php mysql session


【解决方案1】:

如果您想使用 php 会话来完成您想要完成的任务,您可以使用更简单的方法。

您应该创建一个唯一的令牌值并将其存储在开头 mylinks.php 页面上的$_SESSION['token'] 上。您还应该将该值设置为链接上的查询字符串,例如echo"&lt;a href='get.php?id=".$row[0]."&amp;token=".$_SESSION['token']."'&gt;$row[1]&lt;/a&gt;";

现在在get.php页面上,你可以使用下面的条件来查看它是否真的被mylinks.php页面引用了

if(isset($_GET['token']) && $_GET['token'] == $_SESSION['token']) {
     //Token matche, so a valid request
     $_SESSION['token'] = "";
}
else {
    //Invalid request
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2013-07-17
    • 1970-01-01
    • 2016-11-20
    • 2014-07-17
    • 1970-01-01
    相关资源
    最近更新 更多