单击链接时更改会话变量


change session variable when clicking on link

这是这里问题的扩展 - 为不同的 php ORDER BY 语句创建一个新页面?

我基本上需要更改会话变量并使用 php 同时刷新页面(我认为)。

即,当我单击页面上的<a href="#">Sort by date<a>时,会发生以下情况:

  • $_SESSION['orderby']; = 'date';

  • 页面刷新

然后,会话变量将被更改并稍后在我的代码中使用。

我可能需要使用 javascript?我不太确定,我该怎么做?

编辑

我不想/不需要重定向到另一个页面,该页面只需要刷新。基本上我需要单击链接(或按钮),并且需要更改 php 变量。

也许是阿贾克斯?

你可以做的是将一个GET值附加到URL并使用PHP获取它。

例如:

<!-- HTML -->
Sort by <a href='?sort=date'>date</a>
// PHP:
if (isset($_GET['sort'])) {
    $_SESSION['orderby'] = $_GET['sort'];
}

此外,您可以检查 GET -value 是否在给定数组中(以避免 url 操作错误):

if (isset($_GET['sort'])) {
    $sorts = array('date', 'ranking', 'page'); // ...
    $_SESSION['orderby'] = (in_array($_GET['sort'], $sorts) ? $_GET['sort'] : 'STANDARD SORT');
}

使用 ajax 将您的 var 发送到 php 文件以更新会话

$.ajax({
      type: 'POST',
      url: 'date.php',
      data: {'date':date},
      success: function(result) {
       console.log(result)
      } 
    });

日期.php

<?php
   session_start();
    if(isset($_POST['date'])){
      $_SESSION['date'] = $_POST['date'];
      echo 'Date set to: '.$_SESSION['date'];
      }
    }