簡體   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