繁体   English   中英

<a>点击时</a>设置会话变量

[英]Set session variable on <a> click

我试图建立一个<a>链接,该链接将触发下一页的PHP代码。 我试过使用$ _GET变量来执行此操作,但是事情是我也想在以后删除该变量,因为我会自动通过header()链接回重定向页面。 没有将用户单独重定向到一个页面,似乎没有任何可行的方法可以做到这一点,但事实是,人们希望将他们重定向到他们先前所在的页面。 保留$ _GET变量将导致无限循环的重定向。

通常,我希望避免使用$ _GET,因为在我使用它的上下文中它可能会被滥用。不过,任何其他解决方法都将不胜感激。 基本上,我只是想使用<a>链接从MySQL数据库中删除条目。

这是处理变量的PHP。

if (isset($_GET['rm'])) # 'rm' contains the uuid of the entry to be deleted.
{
    $uuid = $_GET['rm'];
    unset($_GET['rm']); # Didn't expect this to work, of course it didn't remove the variable from the URL.
    $query = "DELETE FROM posts WHERE uuid = '$uuid'";
    $result = $mysqli->query($query);
    header("Location: " . $_SERVER['REQUEST_URI']);
    exit();
}

编辑:我现在意识到,我在这里疯狂地解释了我。 主要目标是使<a>链接的点击触发PHP代码,并使用特定于所单击链接的变量。 (每个链接都是帖子上的删除按钮,每个帖子都有一个UUID)

如果有一种方法可以替代地触发javascript代码,那也将非常有帮助,因为我也在这里使用这种方法。 我可能会在一个单独的线程中询问这个问题。

例如,可以使用$ _SESSION删除变量。

    if (isset($_SESSION['rm'])) # 'rm' contains the uuid of the entry to be deleted.
{
    $uuid = $_SESSION['rm'];
    unset($_SESSION['rm']); # Didn't expect this to work, of course it didn't remove the variable from the URL.
    $query = "DELETE FROM posts WHERE uuid = '$uuid'";
    $result = $mysqli->query($query);
    header("Location: " . $_SERVER['REQUEST_URI']);
    exit();
}

考虑您已经注册了下一个形状的值。

$_SESSION['rm'] = "My value";

如果您的目标是重定向到当前页面但删除查询字符串,则可以重定向到header("Location: ?"); 本质上就是这样。 (从技术上讲,您正在重定向到一个没有值的新查询字符串,该值与没有查询字符串完全不同,但是php只会显示$_GET的空数组,该数组本质上是相同的)

我将要提到其他选项,例如$_SERVER变量,但是其中许多选项具有各种安全性或与之相关的其他问题。 我之所以仅提及这一点,是因为除非必要,否则我不建议使用任何方法。 此外,它确实没有比上面更容易的了。

暂无
暂无

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

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